php - 使 AJAX 回调在迭代器中工作

标签 php javascript jquery mysql ajax

为什么这不起作用?只有第一个响应的 success 调用有效。

for(i = 1; i <= 6; i++) {

    $.ajax({
        url : 'runTest.php',
        type : 'post',
        data : "testNumber="+i+"&url=" + testUrl,
        dataType : 'json',
        success : function(data) {

        var row = $('<tr />');
            $('<td />').text(data.testName).appendTo(row);
            $('<td />').text(data.testSeverity).appendTo(row);
            $('<td />').text(data.testResult).appendTo(row);
            $('<td />').text(data.testResultDetail).appendTo(row);
            $('<td />').text(data.testDescription).appendTo(row);

            $('table#results tbody').append(row);

        }
    });

}

enter image description here

最佳答案

服务器端可能有问题。您同时触发同一个 PHP 脚本六次;也许数据库(或其他什么)正在锁定第一个请求和您没有检查的其他五个返回错误。在这种情况下,您需要在 PHP 中包含某种 while...sleep 循环,等待数据库可用。

以下是我针对类似问题所做的操作,当时我使用 PHP 脚本从 Google map 检索数据,但遇到了请求限制。但这个想法很简单,您应该能够根据自己的需要修改它:

$params = http_build_query($_GET);
$url = "http://maps.googleapis.com/maps/api/directions/json?sensor=false&" . $params;

$json = file_get_contents($url);
$status = json_decode($json)->status;

// check for over_query_limit status
while ($status=="OVER_QUERY_LIMIT") {
    sleep(0.2); // seconds
    $json = file_get_contents($url);
    $status = json_decode($json)->status;
}

关于php - 使 AJAX 回调在迭代器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16153639/

相关文章:

php - 将JSON数组插入MySQL数据库无法正确循环

javascript - 比较数组并删除对象

javascript - 使用自定义指令时,两种方式绑定(bind)在 AngularJS 中无法立即工作

php - 如何部署 React/Laravel 项目?

PHP 数据库在具有不同 anchor 标记的相同字段中显示

php - PHP退出后如何添加html和javascript

c# - 如何使用 ajax 将嵌套的 json 对象发送到 mvc Controller

Javascript 使 BBcode 正则表达式变得不贪婪

jquery - html如何引用input标签中的文件

用于滑动菜单的 jQuery 插件(如 mmenu)