0

このpost関数をn回呼び出す必要があります

$.post("prova.php", { myparameter:p1 }, 
    function(msg){ 
       alert('ok')
    }
);

したがって、次のようにループします。

for(i=0;i<myArray.length;i++){
   $.post("prova.php", { myparameter:p1 }, 
        function(msg){ 
           updateUI();
        }
    );
}

最初のmyArray.length-2$ .postがまだアクティブなときに、他のmyArray.length -2 $ .postを停止するにはどうすればよいですか?私の質問が明確であることを願っています..ありがとう!!

4

2 に答える 2

3

あなたはそれを試すことができますか

var x = myArray.length;  // n times you want 

function Send (){
  if (x > 0){
     $.post("prova.php", { myparameter:p1 }, 
        function(msg){ 
          x -= 1 ;
          Send();      
        }
     );
  }
}

オールインワン機能を更新

var x = myArray.length; //必要なn回

function Send (x){
  if (x > 0){
     $.post("prova.php", { myparameter:p1 }, 
        function(msg){ 
          x -= 1 ;
          Send(x);      
        }
     );
  }
}

 function beforeSend(){
    var x = myArray.length;  // n times you want 
    Send (x);
 }
于 2012-05-24T12:39:06.507 に答える
2

$.postリクエストを同時に呼び出すことを望まず、最後のリクエストが終了するまで待ってから次のリクエストを呼び出すことを意味していると思います。

外部ライブラリが次のようなことをしなくても、これを醜い方法で行うことができます。

<script src="text/javascript">
var count = 0;

function doRequest()
{
    if (count >= myArray.length)
        return null;

    $.post('prova.php', { myparameter: p1 }, function(msg)
    {
        updateUI();
        count++;
        doRequest();
    });
}

doRequest();
</script>

または、私のお気に入りのjavascriptライブラリの1つであるasyncを使用することもできます。これにより、もう少し正気でわかりやすいコードを記述して、次のようにすることができます。

<script type="text/javascript">
var count = 0;
async.whilst(function() //test function, stop running when this is return false
{
    return count < myArray.length;
},
function(callback)
{
    $.post('prova.php', { myparameter: p1 }, function(msg)
    {
        updateUI();         
        count++;
        callback(null); //callback with null as the error
    });
},
function(error) //this is called when we're done
{
    //do stuff
});
</script>

これらの2つの関数のいずれかは、それが必要なものであると想定して、一度に1つの要求を実行するだけで処理する必要があります。

于 2012-05-24T12:39:08.653 に答える