如何警告ajax的返回数据。

时间:2011-03-11 11:18:10

标签: jquery

伙计们,我有一个带有ajax的jquery页面,并在一个没有UI的单独的php文件中提交。所以我想要的是,如果说例如我的php文件中的插入查询将失败,我的php中的回声(你的插入失败)将在我的jquery页面中被警告。怎么做?

像这个警报(数据);

6 个答案:

答案 0 :(得分:5)

编辑2:

警告任何PHP echos:

function get_data() {
    $.ajax({
        url: 'get_data.php?rand=' + Math.random(),
        type: 'GET'
        success: function(results) { 
            alert(results);
        }
    });
}

编辑1:

如果您希望错误出现在警报中,请执行以下操作:

用于调试ajax,你可以像这样检查xhr,status和error:

function get_data() {
    $.ajax({
        url: 'get_data.php?rand=' + Math.random(),
        type: 'GET',
        error: function(xhr, status, error) {
            alert(status);
            alert(xhr.responseText);
        },
        success: function(results) { 
            /* clear old results, then display the new results */
            $("#divResults").empty().append(results);
        }
    });
}

但是这可能并不总是显示完整的消息,特别是如果错误消息包含大量数据。它可能最终会离开屏幕。

原始答案:

用于调试ajax,你可以像这样检查xhr,status和error:

function get_data() {
    $.ajax({
        url: 'get_data.php?rand=' + Math.random(),
        type: 'GET',
        error: function(xhr, status, error) {
            /* clear old error message, then display the new php error message */
            $("#divErrorMessages").empty().append(status);
            $("#divErrorMessages").append(xhr.responseText);
        },
        success: function(results) { 
            /* clear the error message first */
            $("#divErrorMessages").empty();

            /* clear old results, then display the new results */
            $("#divResults").empty().append(results);
        }
    });
}

在你的HTML中你应该有2个div

<div id="divResults"></div>
<div id="divErrorMessages"></div>

答案 1 :(得分:0)

试试这个

$.ajax({
  url: "/post/post_url.php",
  type: "POST",
  data: parameters,
  success: function(){
    alert('success');
  },
  error: function(){
    alert('failure');
  }
});

Reference

答案 2 :(得分:0)

您可以在success调用中使用$.ajax处理程序,如diEcho所写。 在此处理程序内部,您可以通过某个标志来判断您的PHP操作是成功还是失败。

error的{​​{1}}处理程序更可能是ajax调用失败,而不是请求操作的状态。

编辑:

应用diEcho的例子:

$.ajax

EDIT2:

在PHP中你可以使用以下

$.ajax({
  url: "/post/post_url.php",
  type: "POST",
  data: parameters,
  success: function(data){
    alert('ajax call finished successfully');
    if (!data.insertedOk) {
      alert(data.message);
    } else {
      // insert succeeded
    }
  },
  error: function(){
    alert('ajax call failure');
    // this mean, /post/post_url.php calling failed (file not found etc...)
  }
});

答案 3 :(得分:0)

关于@diEcho的代码,您还需要使用状态代码(由PHP编写)在success: function()中测试您返回的答案。

另一方面,您可以通过发送“Error 500”标头来强制PHP脚本中的错误,该标头会生成“Fail”回调。 但这不是一个好方法!

在你的PHP中:

if (true === $QueryHasFail) {
    header('HTTP/1.1 500 Internal Server Error'); // <--- Ajax Callback error: function() 
    echo "Oupss, somethink wrong!";
} else {
    echo "Yeah, great"; // <--- Ajax Callback success: function()
}
exit(0);

此处提供更多信息:http://www.rachaelarnold.com/dev/archive/trigger-ajax-error-event

答案 4 :(得分:0)

要警告PHP中回显的内容,“数据”将作为第一个参数传递给成功函数,然后在此示例中以警报形式输出:

$.ajax({
  url: "/post/post_url.php",
  type: "POST",
  data: parameters,
  success: function(data){
    alert(data);
  },
  error: function(jqXHR, textStatus, errorThrown){
    alert('Failure: ' + textStatus + ". Error thrown: " + errorThrown);
  }
});

答案 5 :(得分:0)

我知道这是一个老话题,但是当我发现它搜索类似的东西时,我决定添加一些对以后的搜索有用的信息。

我认为解决方案可以通过发送相应的标头()或http_response_code($ HTTP_ERROR_CODE)来解决;在 PHP脚本中,具体取决于PHP脚本的答案。您可以在这篇文章中找到相关信息:

How to make a ajax call to a php page a success or error?

How to send a server error response using php?

您选择的功能(标头或http_response_code)取决于您使用的PHP版本,似乎可以从PHP 5.4获得http_response_code。

避免“PHP版本交叉编译”的解决方法可能是通过编写自己的http_response_code来实现的,如果测试它存在失败,就像在php.net的另一篇文章中所建议的那样:

http://php.net/manual/en/function.http-response-code.php

在您的HTML / jQuery文档中,您可以检查您的request.fail,request.done和request.always以检索PHP脚本提供的信息,以便在您方便时使用它。

希望这有帮助。