【问题标题】:How to trigger the "error" callback in JQuery AJAX call using in PHP如何在 PHP 中使用 JQuery AJAX 调用触发“错误”回调
【发布时间】:2011-09-29 03:42:42
【问题描述】:

我有 PHP 代码 sn-p 如下:

if (!($result = mysql_query($query, $link))) {
   die("Invalid SQL query: " . $query);
}

我有 JQuery 代码 sn-p 如下:

$.ajax({
        url: "....search.php", 
        data: ...,

        async: false, //to trigger error alert

        success: function(xml) {
            ...
        },

        error: function(xml) {
            foundError = true;
        },

        dataType: "xml"
    });

if(foundError) {
        setProgress("Could not complete the search because an error was found", ProgressBar.ERROR);
}

是否可以让 die call 触发 JQuery 错误函数回调?如果不是,我将如何触发它?

【问题讨论】:

    标签: php jquery error-handling


    【解决方案1】:

    试试这个:

    if (!($result = mysql_query($query, $link))) {
       header("HTTP/1.1 404 Not Found");
    }
    

    Choose the error appropriate for your application

    【讨论】:

    • 酷!如果我在此之前发送数据(例如,在发布 PHP 代码之前我回显了“hello world”;)那么这将不起作用,对吗?想知道有没有其他方法。
    • @BlackSheep, header() 调用必须在其他输出之前进行(即echo "hello world")。
    • 您可以轻松地在页面顶部调用 ob_start(),在底部调用 ob_end_flush(),然后在标题之前调用 ob_clean() 以擦除输出缓冲区(如果其中有任何内容)。
    • 非常感谢。我不知道 ob_X 方法。它们非常有用。 =)
    【解决方案2】:

    您不能从服务器发出客户端代码的信号(至少,不是以您期望的方式)。

    使用 AJAX 时,最好使用正确的 HTTP 响应代码,并让 jQuery 对错误中的响应代码采取行动:回调。

    【讨论】:

      【解决方案3】:

      您无法访问这样的 ajax 错误,因为没有 ajax 错误。您可以做的是检查成功部分中的 xml 变量;如果它以Invalid SQL query 开头,你就知道有一个 php 错误。

      为了整理,您可能希望在出现错误时返回更多信息(xml / json),而不仅仅是一个字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 2012-06-20
        相关资源
        最近更新 更多