在我的页面中使用jquery进行ajax调用:
$.ajax(
{
type: "POST",
url: "MyPage.aspx/myMethod",
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg)
{
alert("Success");
},
error: function(e, textStatus, errorThrown)
{
alert("Error");
},
complete: function(s, e)
{
alert("it is done");
}
}
一切正常,除非用户在发送Ajax调用(但尚未返回)时刷新页面(或导致回发),它会自动进入"错误:"方法
有没有办法避免这种情况?我不想显示"错误"如果他在ajax调用期间刷新了页面,则向我的用户发送消息。
由于
答案 0 :(得分:2)
我重新创建了您的问题,但仅限于Chrome;它在Internet Explorer 10中工作正常。
认为这是一个缓存的请求问题,我尝试在jQuery cache: false
设置中设置.ajax()
,但无济于事。
处理返回的特定错误似乎有效,尽管它不是一个非常优雅的解决方案:
$.ajax({
type: "POST",
url: "MyPage.aspx/myMethod",
data: parameters,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg){
alert("Success");
},
error: function(e, textStatus, errorThrown){
if (e.status === 0) {
alert("Error status 0.");
}
else {
alert("Error");
}
},
complete: function(s, e){
alert("it is done");
}
}
注意:您很可能只想忽略错误状态0,因此我会删除alert("Error status 0.");
,但我将其留在那里以进行调试。
更新:
您可以捕获其他状态代码,例如:
else if (jqXHR.status == 404) {
alert("Requested page not found. [HTTP 404]");
}
else if (jqXHR.status == 500) {
alert("Internal Server Error [HTTP 500].");
}
else if (exception === 'parsererror') {
alert("Requested JSON parse failed.");
}
else if (exception === 'timeout') {
alert("Time out error.");
}
else if (exception === 'abort') {
alert("AJAX request aborted.');
}