1

JQueryとphpで例を書きました。Jquery はポスト クエリを挿入しました。その結果、ページは 9 行を表示する必要があります。JQuery+HTML のコード:

<script type="text/javascript">

$(document).ready(function(){
$.post("test.php", {'test': "test"},
function (result) {
    for (var i = 0; i < result; i++) {
         $.post("test.php", {'test': "test2"},
            function (result2) {
                for (var j = 0; j < result2; j++) {
                    $("#test").append("<p>i="+i+" , j= "+j+" </p>");                    
                }
            }
         );
      }
  }
 );
});

</script>
<div id="test"></div>

test.php には次のコードがあります。

<?php
$id=$_POST["test"];
echo '3';
?>

次の結果があります:

i=3 , j= 0
i=3 , j= 1
i=3 , j= 2
i=3 , j= 0
i=3 , j= 1
i=3 , j= 2
i=3 , j= 0
i=3 , j= 1
i=3 , j= 2 

なぜ i=3 なのですか? この修正方法は?私はこのようにする必要があります:

i=0 , j= 0
i=0 , j= 1
i=0 , j= 2
i=1 , j= 0
i=1 , j= 1
i=1 , j= 2
i=2 , j= 0
i=2 , j= 1
i=2 , j= 2
4

2 に答える 2

0

Marc B が指摘しているように、AJAX 呼び出しは非同期です。必要に応じて、jQuery のasyncオプションを使用してこの動作を無効にすることができますajax()(ただし、POST で i の値を渡すソリューションの方がおそらく優れています)。

$.ajax({
    type: "POST",
    url: "test.php", 
    async: false,
    data: {test: "test"}
}).done( function (result) {
    for (var i = 0; i < result; i++) {
         $.ajax({
             type: "POST",
             url: "test.php",
             async: false,
             data: {test: "test2"}
         }).done(function (result2) {
             for (var j = 0; j < result2; j++) {
                 $("#test").append("<p>i="+i+" , j= "+j+" </p>");                    
             }
         });
     }
});
于 2013-08-15T20:24:53.210 に答える