好的,我要做的是根据错误代码提醒ajax错误,我在网站上有很多ajax调用,所以我使用的是全局ajax错误处理函数。
但我想要的是,如果某个ajax调用已经有默认错误,那么显示那里没有全局。
$(document).ready(function(){
$(document).ajaxError(e,xhr,opt){
if(xhr.error){
//Don't do anything
} else {
alert('You have an error');
}
}
}
第一个功能:
$.ajax({
type:"post",
url:"page.php",
data:"name=mohit&lastname=bumb",
error:function(){
alert('error');
}
});
第二功能:
$.ajax({
type:"post",
url:"page.php",
data:"name=mohit&lastname=bumb",
});
因此,在第二种情况下,它应显示您有错误,在第一种情况下只显示错误
答案 0 :(得分:0)
是的,你可以,但你必须覆盖jQuery默认的$.ajax
方法。检查我在其中一个项目中使用的以下代码。确保在jQuery
之后加载脚本。
我的情景是 -
该网站有很多ajax部分视图,必须检查用户是否已登录。所以我不得不重写jquery调用来检查它。
在进行任何ajax调用时,我还必须显示加载程序。
还有一件事,一些js是由ajax加载的,所以我添加了一个检查url是.js文件还是普通url。
我已经删除了对我的项目保密的敏感代码。剩下的就在这里。这可能会对你有所帮助。
$(document).ready(function () {
var oldjQuery = [];
oldjQuery["ajax"] = $.ajax;
oldjQuery["load"] = $.load;
var newOptions = [];
//override ajax
jQuery.ajax = function (options) {
newOptions["ajax"] = $.extend({}, options);
//override the success callback
newOptions["ajax"].success = function (data, textStatus, jqXhr) {
try {
if (options.url.indexOf('.js') <= -1) {
//this is a normal success call, do nothing
}
}
catch (err) {
//... my other codes, incase any error occurred
}
if (typeof options.success != 'undefined') {
//the ajax call has a success method specified, so call it
options.success(data, textStatus, jqXhr);
}
};
//override the error callback
newOptions["ajax"].error = function (jqXhr, textStatus, errorThrown) {
try {
if (options.url.indexOf('.js') <= -1) {
//this is a normal success call, do nothing
}
}catch (y) {
//... my other codes, incase any error occurred
}
//the ajax call has an error method specified, so call it
if (typeof options.error != 'undefined') {
options.error(jqXhr, textStatus, errorThrown);
}
};
return oldjQuery["ajax"](newOptions["ajax"]);
};
//override load function
jQuery.load = function (url, data, completeCallback, ignore) {
newOptions["load"].completeCallback = function (d, textStatus, jqXhr) {
try {
if (url.indexOf('.js') <= -1) {
//codes
}
} catch (err) {
try {
//codes
}catch (err2) {
}
}
if (typeof completeCallback != 'undefined') {
//call the default completed callback
completeCallback(d, textStatus, jqXhr);
}
};
return oldjQuery["load"](url, data, newOptions["load"].completeCallback);
};
});