如果SQL连接失败,则不会触发ajax错误

时间:2017-09-27 21:31:45

标签: php ajax

我有一个简单的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");

1 个答案:

答案 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调用似乎更好地捕获了内部服务器错误。

如果有效,请告诉我。