3

我想用 jquery 向 php 页面发送一个 ajax 请求。但我想定义我的成功和错误函数。我可以做到这一点,但是在请求 php 页面中,我如何让它成功或错误,比如我需要调用一些特殊的函数或什么,导致我定义的成功或错误函数执行?

编辑:

我试过这个,但它给了我成功,即使我将 http_response_code 代码切换到 403。

    $.ajax({
      url: "sqlhandler.php?memberID=<?php $memberID ?>",
      success: function(){
        alert("success");
      },
      error: function() {
        alert("error");
      }
    });

sqlhandler.php

<?php
    http_response_code(200);
?>
4

4 回答 4

5

抛出 200 表示好的响应和 4xx 表示不好的响应: http: //php.net/manual/en/function.http-response-code.php

如果用户试图看到他们不应该看到的东西,请使用http_response_code(403);(forbidden)。

如果他们尝试查看不存在的东西,请使用 404。

如果您只是不喜欢它们,请使用 403 作为包罗万象的方法。

有关在 jQuery 中捕获这些错误代码的更多信息:http ://www.unseenrevolution.com/jquery-ajax-error-handling-function以下是从该页面复制的示例:

$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                alert('Not connect.\n Verify Network.');
            } else if (jqXHR.status == 404) {
                alert('Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                alert('Internal Server Error [500].');
            } else if (exception === 'parsererror') {
                alert('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Time out error.');
            } else if (exception === 'abort') {
                alert('Ajax request aborted.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });
});
于 2013-06-14T00:50:31.920 回答
1

HTTP 状态码是指示请求是成功还是失败的方式。

PHPhttp_response_code设置状态码。

在传递给 的对象中$.ajax,您可以将error成员定义为所有3xx4xx5xx状态代码的包罗万象,或者您可以定义statusCode对象以使用不同的函数处理每个状态代码。

于 2013-06-14T00:50:29.287 回答
1

当您进行任何 HTTP(AJAX 或其他)调用时,都会有响应代码。有很多,例如错误代码 200 表示 OK,4xx 调用表示错误(例如,404 表示“页面未找到”错误)。

你应该对它们做一些研究。

于 2013-06-14T00:51:36.867 回答
1

我通常使用以下代码:

.done(function(msg){
if(msg==1)
   alert("Success");
else
   alert("Failure");
})

根据您从 PHP 脚本传递的内容,您可以更改代码。

于 2013-06-14T01:51:43.507 回答