3

我正在 jquery 中对 php 脚本进行 ajax 调用。但是 php 脚本需要返回什么才能触发 ajax 中的成功/错误处理程序。所以这里是ajax:

$.ajax({
        data: $this.serialize(),
        type: "POST",
        url: "/Scripts/script.php", 
        success: function() { 
            alert("script was successful");
        },
        error: function() { 
            alert("script was unsuccessful");
        }
    });

因此 php 脚本可以返回一些内容,例如:

return 0, 1
return true, false
return "true", "false"
echo "true", "false

哪一个会触发 ajax 成功/错误调用?

4

2 回答 2

11

只要服务器端脚本发送 HTTP 状态代码 200,它就会始终触发success回调。反应根本不重要。只有状态码。在您展示的所有示例中,您正在发送 HTTP 状态代码 200 => 成功回调将始终触发。

您可以使用该http_response_code函数将状态代码强制为不同于 200 的值。

作为替代方案,您可以让 PHP 脚本返回一些信息,然后在成功函数中测试脚本返回的值,以了解某些服务器端处理是否失败:

$.ajax({
    data: $this.serialize(),
    type: "POST",
    url: "/Scripts/script.php", 
    success: function(result) { 
        if (result == 'true') {
            alert("script was successful");
        } else {
            alert("script was unsuccessful");
        }
    },
    error: function() { 
        alert("something very bad went wrong => there's a bug in the script");
    }
});

现在您的脚本可以 echotruefalse.

如果要发送复杂对象,可以使用该json_encode函数将它们作为 JSON 发送,并将 HTTP Content-Type 标头设置为application/json使用该header函数。

于 2012-10-21T08:34:14.433 回答
0

Succes 在请求完成且没有错误的情况下执行XMLHTTPRequest,无论您返回什么结果。还有另一个complete回调,它在你的 AJAX 脚本完成时执行,不管你是否有 XMLHTTPRequest 错误。

于 2012-10-21T08:34:47.467 回答