我有一个AJAX请求(使用JQuery)调用PHP脚本来执行某些数据库业务。请求代码如下:
$.ajax({
url: "script.php",
data: { value: value
},
type: 'post',
success: function(output){
alert(output);
}
});
但是,我想看看是否还有一种方法(除了未更改的输出字符串)返回状态。它可以像整数一样简单。关键是我想要禁用一个按钮(使用Javascript),如果PHP脚本由于任何原因无法连接到mySQL,但我仍然希望PHP脚本完全按原样输出。
我尝试了错误选项:
...
success: function(output){
alert(output);
},
error: function(output){
// do something
}
但我不知道如何让PHP显示错误并继续执行脚本的其余部分。同样,我不想篡改输出字符串。
在伪代码中,我正在寻找类似的东西:
$.ajax({
url: "script.php",
data: { value: value
},
type: 'post',
success: function(output){
if(output.status == 0){
alert(output);
}else{
// do something else
}
}
});
有什么可能吗?感谢您的帮助!
答案 0 :(得分:2)
我通常以JSON格式从服务器返回数据。这样我可以返回javascript中成功函数可能需要的许多不同类型的数据。
基本上在PHP中你会做类似
的事情$response = new stdClass();
$response->error = 'Could not connect to Mysql';
$response->message = 'Some other text';
echo json_encode($response);
在JQuery中,ajax()方法会自动检测到响应是json并将其解析为javascript对象,因此您可以像这样访问
if (typeof response.error !== undefined) alert(response.error);
有关jQuery文档中ajax()方法的dataType参数的更多信息。
答案 1 :(得分:1)
是。您可以使用HTTP状态代码:
header('HTTP/1.1 500 Internal Server Error');
并使用jQuery的statusCode
属性jQuery.ajax()
:
$.ajax({
// stuff
statusCode: {
500: function(data) {
alert('Something went wrong!');
}
}
});
如果您的需求超出了HTTP提供的范围,您只需在数据中返回状态代码,然后在success
函数中处理它,然后启用data.status
。
答案 2 :(得分:1)
如果我没有误解你的问题......
我通常做的是将AJAX调用的数据类型设置为'xml',并从我的PHP脚本输出一个xml。所以我在结果中得到了多个值。我通常会创建这些属性值。
<result status="success" something="etc" />
// vs.
<result status="failure" error="1" />
// consider 1 as the DB error
使用这种方法,您可能需要在某些PHP函数中使用@标签来防止输出默认错误。