如何使用jquery的$ .ajax的错误参数?假设我有一个表单,然后当我提交它时,数据将使用在<,p>中使用的PHP脚本保存到表中。
$.ajax({
type: "POST",
url: "classes/ajax.submitcv.php",
data: "userid="+userid+"&resumetitle="+resumetitle+"&resumeintro="+resumeintro+
"&name="+name+"&dob="+dob+"&contacttel1="+contacttel1+"&contacttel1type="+contacttel1type+
"&contacttel2="+contacttel2+"&contacttel2type="+contacttel2type+"&contacttel3="+contacttel3+
"&contacttel3type="+contacttel3type+"&primaryemail="+primaryemail+"&secondaryemail="+secondaryemail+
"&skype="+skype+"&facebook="+facebook+"&linkedin="+linkedin+"&twitter="+twitter+
"&messenger="+messenger+"&yahoo="+yahoo+"&aol="+aol+"&summaryofpositionsought="+
summaryofpositionsought+"&summaryofskills="+summaryofskills+"&gender="+gender,
success: function(){
$('form#wsrecruitcvhead').fadeOut("normal",function(){
$('div.success').fadeIn(1000);
});
},
});
return false;
});
});
根据上面的代码,如果数据通过数据库表,表单消失,标签内的成功消息显示,那么我将如何输出错误消息,让我说我有一个PHP函数和要插入的数据返回false,如何更新html文件给出的消息和表单不会fadeOut?简而言之..如何使用$ .ajax的错误参数?
答案 0 :(得分:1)
error()函数用于在请求失败时调用函数。我们假设您的请求不会失败(在HTTP意义上;也就是说,请求可以返回错误而不会失败)。您需要做的是让ajax.submitcv.php打印出某种文本,指示数据是否已成功保存。然后,在success()函数中,您可以执行以下操作:
success: function(data) {
if (data === 'success') {
// code for success
}
else if (data === 'failure') {
// code for failure
}
}
我建议将结果作为JSON发回。类似的东西:
{“回复”:“成功”}
和
success: function(data) {
var returned = $.parseJSON(data);
if (returned.response === 'success') {
// code for success
}
else if (returned.response === 'failure') {
// code for failure
}
}
顺便说一句,我很一般。实际的生产代码应该检查空值和其他东西(并且在请求失败时有一个错误处理程序)。
答案 1 :(得分:1)
如果要使用$ .ajax的错误参数,则需要从php页面发送带有错误代码的HTTP状态标头(在任何其他输出之前!)。例如:
if(some_function(...) === FALSE)
{
header("HTTP/1.0 403 Forbidden");
exit;
}
答案 2 :(得分:0)
为了让您从ajax调用中处理应用程序中的某种错误,您需要将此类错误发送到您的页面。我自己在ajax的情况下通常返回一个json,其中包含状态和消息等。 让我举个例子说明我会做什么: 我首先会像以下一样返回一个json: 成功案例:
{"status":"OK", "message":"The data saved!", "data":[some kind of data]}
错误情况:
{"status":"ERROR", "message":"Could NOT save DATA!", "data":[some kind of data]}
然后在处理程序中:
$.getJSON("myAjaxUrl", function(response) {
if(response.status=='ERROR') {
//handle the error and maybe alert the message
alert(response.message);
} else {
//do whatever. Everything went ok, maybe alert a message if any
alert(repsonse.message);
}
)};
之前的优点是您可以添加aditional状态。
使用之前的版本,您可以处理所谓的Business errosr,即应用程序中的错误。也许你还想处理一个错误,因为我们说应用程序失败了,而ajax无法访问url。 对于最后一种情况,您需要一个用于ajax调用的错误处理程序。您需要执行以下操作:
$.getJSON("myAjaxUrl", function(response) {
if(response.status=='ERROR') {
//handle the error and maybe alert the message
alert(response.message);
} else {
//do whatever. Everything went ok
}
)}
.error(function() { alert("Fatel Error!!"); });
您可以查看此here
的文档答案 3 :(得分:0)
详细说明@John Kurlak发布的内容,error()参数不用于“表单错误”。请求失败时调用它。他给你回复“成功”或“失败”的建议是你处理表单验证的方式。
以下是如何处理实际请求错误的示例...
function ajax_error(request, type, errorThrown)
{
var message = "There was an error with the AJAX request.\n";
switch (type) {
case 'timeout':
message += "The request timed out.";
break;
case 'notmodified':
message += "The request was not modified but was not retrieved from the cache.";
break;
case 'parseerror':
message += "XML/Json format is bad.";
break;
default:
message += "HTTP Error (" + request.status + " " + request.statusText + ").";
}
message += "\n";
alert(message);
}
然后从ajax调用的错误()参数中调用ajax_error ......
$.ajax({
type: "POST",
url: "classes/ajax.submitcv.php",
data: "userid="+userid+"&resumetitle="+resumetitle+"&resumeintro="+resumeintro+
"&name="+name+"&dob="+dob+"&contacttel1="+contacttel1+"&contacttel1type="+contacttel1type+
"&contacttel2="+contacttel2+"&contacttel2type="+contacttel2type+"&contacttel3="+contacttel3+
"&contacttel3type="+contacttel3type+"&primaryemail="+primaryemail+"&secondaryemail="+secondaryemail+
"&skype="+skype+"&facebook="+facebook+"&linkedin="+linkedin+"&twitter="+twitter+
"&messenger="+messenger+"&yahoo="+yahoo+"&aol="+aol+"&summaryofpositionsought="+
summaryofpositionsought+"&summaryofskills="+summaryofskills+"&gender="+gender,
success: function(){
$('form#wsrecruitcvhead').fadeOut("normal",function(){
$('div.success').fadeIn(1000);
});
},
error: ajax_error
});