我有一个简单的ajax请求。 它调用PHP页面并建立与MySQL数据库的连接。
即使连接失败(因为我关闭了MySQL服务),我的ajax调用的成功部分也会被触发......
$.ajax(
{
type: "POST",
url: "ajax.php",
timeout: 10000,
data: (
{
"type": "approveAndEmail",
"id": id
}),
error: function(){
alert('error');
},
success: function(response)
{
alert('yes');
}
});
有什么想法吗?
我的PHP看起来像这样(是的,我将从mysql_connect更新!
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
答案 0 :(得分:1)
如果MySql连接失败,可以通过抛出异常来解决这个问题,如此,
$serverConn= mysql_connect("$host", "$username", "$password");
$dbConn = mysql_select_db("$db_name");
if (!$serverConn || !$dbConn) {
throw new Exception("Database Connection Failed");
}
通过抛出异常,将发生内部服务器错误,这将由AJAX fail
回调检测到。
请务必像这样修改您的ajax调用:
$.ajax(
{
type: "POST",
url: "ajax.php",
data: (
{
"type": "approveAndEmail",
"id": id
}),
}).done(function(data) {
alert("Call Worked")
})
.fail(function(data) {
alert("error happened(DB)")
})
.fail
调用似乎更好地捕获了内部服务器错误。
如果有效,请告诉我。