2

jQuery ポスト リクエストをよく使用します。応答内で作業している場合、変数には独自のスコープがあることを理解しています。応答で変数を設定する良い方法はありますが、それらの変数を投稿の外で使用できるようにしますか? JS の他の関数と同様です。

これが私がやっていることのサンプルです:

 $.post('URL', { }, function(data) {

    var cData = $.parseJSON(data);

    $.each(cData, function(k, v) {

      var cID = v.id;  

  });

それで、投稿リクエストの外でcIDにアクセスできないようにするために何をしますか。これを機能させる方法はありますか?

どんな助けでも素晴らしいでしょう。ありがとう

アップデート:

これが私がテストしたばかりのサンプルです:

var savedCount;

$.post('/app/actions/countsAction.php', { call: "getCountFullByID", countID: countID}, function(data) {

    savedCount = 1;
    alert(savedCount);

});

alert(savedCount);

これを実行すると、2 つのアラートが表示されます。1 つ目は $.post でアラートが発生した場合の 1 で、2 つ目は未定義です。

4

2 に答える 2

7

$.post呼び出しの外で変数を宣言するだけです:

var cID;
$.post('URL', function(data) {
    var cData = $.parseJSON(data);
    $.each(cData, function(k, v) {
        cID = v.id;  
    });
});

...コレクションをループして、単一の変数の値を継続的に (再) 設定しているため、それで何をしようとしているのかわかりません。すべての変数を追跡する必要がある場合は、(おそらく) 配列に値を保持することを検討してください。

編集同期(「ブロッキング」)呼び出し を行う必要がある場合は$.post、できます。関数パラメーターのドキュメントから:asynch

デフォルトでは、すべてのリクエストは非同期で送信されます (つまり、これはデフォルトで true に設定されています)。同期リクエストが必要な場合は、このオプションを false に設定します。クロスドメイン リクエストと dataType: "jsonp" リクエストは、同期操作をサポートしていません。同期リクエストはブラウザを一時的にロックし、リクエストがアクティブな間はすべてのアクションを無効にする場合があることに注意してください。

乾杯

于 2012-12-07T19:59:48.740 に答える
1

変数をループして別の値にリセットする代わりに、データ オブジェクト全体を保存できます。その後、外部のすべてのデータにアクセスできます。また、変数を外部で定義して、変数に$.postアクセスできるようにする必要があります

var cID;
$.post('URL', { }, function(data) {    
    cID = $.parseJSON(data);             
});
于 2012-12-07T20:03:40.397 に答える