2

使用此 Jquery AJAX 方法的新手。因此,我正在使用 Jquery 进行 AJAX 调用,在我的 PHP 脚本中,我正在检查数据库中的条件是否为真,然后再传入我的数据字符串并绑定变量,然后执行该查询。脚本和数据库插入都可以正常工作。

我的问题是,如何让它在我的 PHP 脚本返回时在我的 AJAX 调用中显示错误消息?

JS


$.ajax({
type: "POST",
url: 'submit_form.php',
data: dataString,
error: function() { alert('Error'); },
success: function() { alert('Success'); }
});

SUBMIT_FORM.PHP

if ( count of rows in db < x  )
 {

return false;
exit();

}

如果此条件为真,我想停止执行我的脚本并在我的 AJAX 函数中执行错误条件。


elseif ($stmt = $mysqli->prepare("INSERT INTO blah (stuff, morestuff) values (?, ?)")) {

 /* Bind our params */
  $stmt->bind_param("ss", $param1, $param1);

        /* Set our params */
$param1= $_POST["name"];
$param2= $_POST["email"];


/* Execute the prepared Statement */
$stmt->execute();
/* Close the statement */
$stmt->close(); 
}

如果第一个条件为假,那么我想在我当前正在执行的 ajax 调用中返回成功函数。

4

4 回答 4

7

要调用您的错误处理程序$.ajax,您可以用 PHP(对于 FastCGI)编写以下代码:

header('Status: 404 Not found');
exit;

或者,header('HTTP/1.0 404 Not Found')如果您不使用 FastCGI,请使用。

我个人不会使用这种方法,因为它模糊了 Web 服务器错误和应用程序错误之间的界限。

最好使用错误机制,例如:

echo json_encode(array('error' => array(
    'message' => 'Error message',
    'code' => 123,
)));
exit;

在您的成功处理程序内部:

if (data.error) {
    alert(data.error.message);
}
于 2012-10-24T06:51:14.243 回答
2

如果您想在 jquery 中执行错误命令,您可以尝试使用: throw new Exception("Invalid");在您的 php 代码中(应该调用错误的地方)。

这将导致 http 服务器向您的 javascript 代码返回错误代码 500。

于 2012-10-24T06:45:04.263 回答
2

你的概念是错误的。错误条件意味着 ajax 调用中的错误将您的代码更改为此

$.ajax({
type: "POST",
url: 'submit_form.php',
data: dataString,
error: function() {
 alert('Error'); //here the error is the error in ajax call.eg failing to call or a 404..etc
 },
success: function(msg) {
if(msg=='error'){
   alert('Error'); //this is the error you are looking for
}else{
 alert('Success'); 
}

}
});

你的 PHP

if ( count of rows in db < x  )
 {
echo 'error'; //this is  enough
exit;

}
于 2012-10-24T06:46:23.300 回答
0

根据jquery,我认为您对jquery错误设置有点困惑

error :请求失败时调用的函数。

所以你的错误代码只会因为以下原因而被触发

404 错误 - 找不到 ajax 文件错误

500 错误 - ajax 内部系统错误

于 2012-10-24T06:47:09.080 回答