while循环与ajax调用无法在JavaScript中工作

时间:2015-10-18 15:58:54

标签: javascript php jquery ajax

我试图在javascritp中进行基本的while循环,但是每次启动脚本时我都会在os x中获得滚轮图标。当我按下html按钮时执行此代码:

    <script type="text/javascript">
$(document).ready(function(){
    $("button").click(function(){
        myFunction();
        });
});
    var num=1;
function myFunction() {

    var c = 0;
    // Find a <table> element with id="myTable":
    var table = document.getElementById("myTable");
    // Create an empty <tr> element and add it to the 1st position of the table:
    var row = table.insertRow(-1);
    // Insert new cells (<td> elements) at the 1st and 2nd position of the "new" <tr> element:
    var cell1 = row.insertCell(0);
    var cell2 = row.insertCell(1);

while(num != 5)
{
    $.ajax({
            type: 'get',
            url: 'controller/script.php',
            type: "POST",
            data: (
            {
                name: 'Alfro',
                surname: 'McDohl',
                num: num
            }),
            success: function(data) 
            {                
                $("p.polla").text(data);
                var result = $.parseJSON(data);
                // Add some text to the new cells:
                cell1.innerHTML = result[0];
                cell2.innerHTML = result[1];
                num = result[2];
            },
            error: function()
            {
                alert('error');
            },
        });
    }           
}

这是script.php的php代码:

<?php

$name = $_POST['name'];  
$surName = $_POST['surname'];
$num=$_POST['num'];
$num++;
if ($_POST['num']>=10){
    echo json_encode(array($name.$c++, $surName.$c++,'0'));
}
else{
    echo json_encode(array($name.$c++, $surName.$c++,$num));
}
?>

这是因为我想从数据库加载数据,但是检索所有信息需要花费太多时间,所以我想用ajax调用显示一个结果,然后继续检索要显示的数据库另一个结果,&#34;每人一个&#34;为此,我需要使用while循环,所以我正在玩这个while循环,但我无法让它工作。

1 个答案:

答案 0 :(得分:2)

不要使用while循环。您的Ajax调用是异步发生的,因此while循环永远不会更改n的值。因此,删除循环并将条件放在Ajax成功块中,然后再从那里再次调用myFunction(num)

success: function(data) 
            {                
                $("p.polla").text(data);
                var result = $.parseJSON(data);
                // Add some text to the new cells:
                cell1.innerHTML = result[0];
                cell2.innerHTML = result[1];
                num = result[2];
                myFunction(num);
            },