我正在使用jQuery $ .ajax()函数在php页面上执行数据库插入操作。因此,一旦成功,它将执行常规操作,但我希望ajax调用在更新操作失败时收到错误。
所以它应该是:
那么,我应该做一个假的回报;从我的PHP功能?我认为$ .ajax()的成功或错误取决于AJAX调用是否成功。所以,我想即使我回归虚假;从我的php函数来看,它仍将被视为ajax调用的“成功”。右
答案 0 :(得分:3)
您可以按照建议的方式在服务器响应中(或使用JSON)返回错误消息。但我不太喜欢它,因为这污染了返回的数据。
我喜欢我最近使用的另一种方式,包括创建自定义HTTP标头以通知是否存在错误。
PHP代码:
if($there_was_error){
header("DB_SUCCESS: 0"); //Sends a custom header
}else{
header("DB_SUCCESS: 1");
}
jQuery代码:
$.ajax({
...
success: function(data, status, xhr){
//You can use your 'data' var as always
if(xhr.getResponseHeader("DB_SUCCESS") == 1){
alert("Save successful");
//Your regular sutff
}else{
alert("Save failed");
}
}
...
})
正如您所看到的,我们创建了一个名为DB_SUCCESS
的自定义HTTP标头,用作元数据,因此我们可以将其分配给服务器端(php)并使用客户端(javascript)进行读取以了解如果有错误。
希望这会有所帮助。干杯
答案 1 :(得分:1)
您需要在$ .ajax()成功:函数
中处理PHP的成功/错误假设这是你的ajax.php:
if($whatever)
{
echo 'success';
}
else
{
echo 'fail';
}
假设这是你的javascript $ .ajax():
success: function(data)
{
switch(data)
{
case 'success':
// handle good logic
break;
case 'fail':
default:
// handle bad logic
break;
}
}
答案 2 :(得分:1)
我评估来自服务器的响应,如果PHP中发生错误,它只是输出JavaScript代码来显示错误。
适用于所有类型的事情,包括重新登录会话超时,访问限制,异常处理等等。
我希望这种方法更受欢迎。
https://github.com/atk4/atk4/blob/master/templates/js/atk4_univ.js#L413
答案 3 :(得分:1)
这很简单,简而言之:您可以捕获从PHP返回的任何内容。
详细信息:以下代码段可以帮助您清楚地了解问题。
PHP
$result = //your database result
if($result){
//Print any success message you want the user to see
echo "Success";
}else{
//Print any error message you want the user to see
echo "Error";
}
JQUERY
$.ajax({
type: "POST",
url: "controller.php",
data: params,
success: function(msg){
//Alert the returned message to the user,
//the variable msg already contains your message
//whether it is success or error,
//it can even contain HTML or JavaScript
alert(msg);
}
});
答案 4 :(得分:0)
我会用PHP构建一个数组。如
$status['completed'] = true;
$status['message'] = "Completed";
取决于插件如何更改这两个值。
然后我会做http://php.net/manual/en/function.json-encode.php json_encode
并回复它。您的jQuery会收到JSON
,如果completed
为真,那么一切正常。如果 false ,请检查message
。
您还可以使用jQuery中的getJSON
方法使其更加轻松。
答案 5 :(得分:0)
Ajax正在客户端上发生。
您的PHP已在服务器上结束。
这是一个可能有帮助的优秀的示例:
$.ajax({
type: "POST",
url: "login.php",
data: "action=login&user=" + user + "&pass=" + pass,
success: function(xhr){
if ((xhr == "Invalid Login")
|| (xhr == "Invalid charaters in username.")
|| (xhr == "Missing username or password.")
|| (xhr == "Unknown Error")) {
$("#loginMessageContent").html(xhr);
}
else {
simplemodalClose (dialog);
}
},
error: function(xhr) {
alert ("Oopsie: " + xhr.statusText);
}
});