0

複数の非同期 AJAX 呼び出しを循環するループがあります。呼び出しには、ループの繰り返しがインデックスとして渡されます。呼び出しが完了すると、インデックスに応じてデータが配列に格納されます。

ただし、success 関数で返されるインデックスは、最初の AJAX 呼び出しに渡されるインデックスとは異なります。呼び出しが最初に供給されたのと同じインデックスを成功時に返す良い方法はありますか?

var ptype = 'fp';
    var pnum = 2;
    var data = new Array();

    for(var i = 1; i <= 5; i++){
        call_general_forecast(ptype,i,pnum);
    }  

function call_general_forecast(ptype, i1, pnum1){
        index = pnum1*5 + i1;
        $.ajax({
             url: '',
             data : { stock_name : stock_name, pattern: ptype, specificity : i1},
             type : 'get', //or 'post', but in your situation get is more appropriate,
             dataType : 'json',
             success : function(r) {
                data[index] = r;
                alert(index);
             },
             async: true

        });          
} 
4

1 に答える 1

1

indexグローバル変数として使用しています。キーワードを使用してローカル変数として宣言するとvar、クロージャーが残りを行います。すべての成功関数は、正しいインデックス (要求が行われたときと同じ値) を持ちます。

function call_general_forecast(ptype, i1, pnum1){
    var index = pnum1*5 + i1;
    $.ajax({
         url: '',
         data : { stock_name : stock_name, pattern: ptype, specificity : i1},
         type : 'get', //or 'post', but in your situation get is more appropriate,
         dataType : 'json',
         success : function(r) {
            data[index] = r;
            alert(index);
         },
         async: true

    });          
} 
于 2013-10-05T13:51:34.230 に答える