我有一个没有发现错误的帖子功能。
这是从postride.php返回的值。
if ($group_id==0) {
echo 'No group selected';
return false;
exit;
}
这是jquery代码:
$(document).ready(function(){
$('#postride').submit(function(event) {
event.preventDefault();
dataString = $("#postride").serialize();
$.ajax({
type: "post",
url: "postride.php",
data:dataString,
error: function(returnval) {
$(".message").text(returnval + " failure");
$(".message").fadeIn("slow");
$(".message").delay(2000).fadeOut(1000);
},
success: function (returnval) {
$(".message").text(returnval + " success");
$(".message").fadeIn("slow");
$(".message").delay(2000).fadeOut(1000);
//setTimeout( function() { top.location.href="view.php" }, 3000 );
}
})
return false;
});
});
post函数返回false,但错误函数不会触发,只有成功函数。它将发布“No group selected success”。
感谢您的帮助!
答案 0 :(得分:22)
jQuery ajax方法中的错误选项是由错误的连接,超时,无效的url,这种性质的东西引起的错误。这不是你想的那种错误。
大多数人做的是这样的......
<强> PHP 强>
if ($group_id == 0) {
echo json_encode(array(
'status' => 'error',
'message'=> 'error message'
));
}
else
{
echo json_encode(array(
'status' => 'success',
'message'=> 'success message'
));
}
<强>的javascript 强>
$(document).ready(function(){
$('#postride').submit(function(event) {
event.preventDefault();
dataString = $("#postride").serialize();
$.ajax({
type: "post",
url: "postride.php",
dataType:"json",
data: dataString,
success: function (response) {
if(response.status === "success") {
// do something with response.message or whatever other data on success
} else if(response.status === "error") {
// do something with response.message or whatever other data on error
}
}
})
return false;
});
答案 1 :(得分:2)
wsanville是正确的:“成功”或“失败”是指ajax请求的成功/失败。
但是,我发现在json响应中返回信息很有用,而不是改变HTTP头。所以,举个例子,我会让postride.php这样回应:$error = false;
if ($group_id==0) {
$error = 'No group selected';
}
$response = array('error'=>$error);
echo json_encode($response);
然后在JS的“成功”回调中,我会这样做:
success: function (returnval) {
if (returnval.error) {
$(".message").text(returnval + " failure")
.fadeIn("slow",function(){
$(this).delay(2000).fadeOut(1000);
});
} else {
//do whatever user should see for succcess
}
答案 2 :(得分:0)
只有当请求的页面返回错误状态代码时,才会调用jQuery的error
函数的ajax
方法。您的示例可能会返回HTTP 200,这就是调用success
的原因; jQuery不会询问响应的内容以确定它是否成功。
您应该在$group_id
为0时设置4xx status code,通过拨打header替换echo
来电。