伙计们,我有一个带有ajax的jquery页面,并在一个没有UI的单独的php文件中提交。所以我想要的是,如果说例如我的php文件中的插入查询将失败,我的php中的回声(你的插入失败)将在我的jquery页面中被警告。怎么做?
像这个警报(数据);
答案 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');
}
});
答案 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脚本提供的信息,以便在您方便时使用它。
希望这有帮助。