2

私はjQueryを使用しており、次のコードがあります。

var result = [];

if ( some_condition ) {
  result = [...]
} else {
  $.ajax({
    url:      some_url,
    data:     some_data,
    dataType: 'json',
    success:  function(data) {
      items = data
    }
  });

  result = items
}

// Playing with the 'result' variable...

上記のコードは、 のitems is not defined場合にエラー " " を生成しsome_conditionますfalse(変数のスコープが正しくないために発生すると思います)。

変数を AJAX 応答データに設定したいのresultですが、問題の解決方法がわかりません。


注:ステートメントの外側(つまり、上記のコードのステートメントの後)result変数を使用したいので、そうしようとしています。if ... elseif ... else

4

2 に答える 2

3

これを行う:

非同期と呼んでいるので、コールバック関数で割り当てる必要があります

var result = []; 


if ( some_condition ) {
  result = [...]
} else {
  $.ajax({
    url:      some_url,
    data:     some_data,
    dataType: 'json',
    success:  function(data) {
      result = data;
      validateResult(result);
    }
  });
}

そして、あなたのより良い理解のために。

結果配列はグローバル変数です。

  1. 最初は長さ = 0 の配列です。
  2. ajax 関数を呼び出します。
  3. 結果配列の長さはまだ 0 です。
  4. Ajax 呼び出しが完了し、success 関数が実行されます。
  5. 成功関数では、結果を応答データに割り当てます。
  6. 結果配列の長さがゼロではなくなりました。
  7. グローバルに値が更新されます。
  8. コードのどこでも結果配列を使用できます
于 2012-11-23T04:34:01.637 に答える