带有数组和/或接收数组的JQuery $ .post()不起作用

时间:2014-05-24 19:25:41

标签: javascript php jquery arrays

我想使用JQuery $ .post()方法ping服务器并获取该服务器的在线状态。 我目前的代码:

JQuery的:

$(window).load(function() {
    $.post('php/ping_server.php', { 'domains[]': ["example.com", ..., ...] }, function(status) {
        for (var i=0; i < status.length; i++) {
            $('.sidebox .onlinestatus').eq(i).addClass(status[i]).text(status[i]);
        }
    }, "json");
});

PHP:

include('functions.php');

if (isset($_POST["domains"])) {
    $status = array();
    foreach($_POST["domains"] as $domain) {
        $status[] = pingDomain($domain);
    }
    die(json_encode($status));
}

函数pingDomain()返回“离线”或“在线”,它起作用 我没有在控制台中收到任何错误或警告,但没有任何反应......

有什么问题?

1 个答案:

答案 0 :(得分:1)

您可能需要在php中使用正确的标头,例如

include('functions.php');

if (isset($_POST["domains"])) {
    $status = array();
    foreach($_POST["domains"] as $domain) {
        $status[] = pingDomain($domain);
    }
    header('Content-Type: application/json'); // here 
    die(json_encode($status));
}

解析 JS中的响应

$(window).load(function() {
    $.post('php/ping_server.php', { 'domains': ["example.com", ..., ...] }, function(status) {
        status = JSON.parse(status); // here
        for (var i=0; i < status.length; i++) {
            $('.sidebox .onlinestatus').eq(i).addClass(status[i]).text(status[i]);
        }
    }, "json");
});

注意:两者都是因为您已明确指定了预期的数据类型。否则不需要。