1

私はCoffeeScriptとjQueryを使用しており、ローカル変数に格納されているajax呼び出しからデータを取得して、メソッドの残りの部分で使用できるようにしています。これが私の既存のコードです:

response = null
$.ajax
  url: '/polygons'
  dataType: 'json'
  success: (data, textStatus, jqHXR) ->
    response = data

console.log response

このコードでは、応答は常にnullのままです。私がやりたいのは、success関数から呼び出し元のメソッドにデータ変数を取得することだけですが、そのスコープから取得することはできないようです。私はここで何が間違っているのですか?

4

1 に答える 1

4

Ajaxは非同期であるため、呼び出し時に応答が設定されませんconsole.log response。コールバック関数で応答を使用してください。

response = null
$.ajax
  url: '/polygons'
  dataType: 'json'
  success: (data, textStatus, jqHXR) ->
    response = data
    console.log response

この後、ajax呼び出しが完了するまでスクリプトが待機し、null応答オブジェクトを使用して続行しないようにするにはどうすればよいですか?

コールバック関数ですべての処理を行う必要があります。それを望まない場合は、ajaxオプションでasyncをfalseに変更することでajax呼び出しを同期させることができます。

于 2012-09-02T22:20:44.857 に答える