ajax fail 错误码,如何通过Ajax处理HTTP Response 500错误代码“.fail()”trigger?

的另一种方法,代替通过.always()过滤反应最初,然后调用.done().fail()或通过滤波延迟直接调用.done().fail()或;维护处理实际净误差与同fail()回调的能力

// simulate server-side responses

var error = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"

+ ""

+ "message"

+ "Invalid input data"

+ "";

var success = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"

+ ""

+ "message"

+ "Success" + "";

// params

$.ajaxSetup({

beforeSend : function(jqxhr, settings) {

var d = decodeURIComponent(settings.data)

.match(/data=+.*/)[0]

.split(/=|&/);

var params = {};

params[d[0]] = {};

params[d[0]][d[1]] = d[2];

params[d[0]][d[3]] = d[4];

jqxhr.data = params;

}

});

var request = function (url, _xmlResponse, data1, data2) {

var _response = new $.Deferred(),

_request = $.ajax({

url: url,

type: "POST",

data: {

// responses

xml: _xmlResponse,

// params

data: "param1="+ data1 +"&param2="+ data2

},

dataType: "xml"

});

// check `responseText` for "Invalid" ,

// check `textStatus` for actual net error , "error"

_request.always(function (xml, textStatus, jqxhr) {

console.log(xml, textStatus, jqxhr, "check");

// simulate server-side processing, cont.

// if both object passed to server ,

// `param1` and `param2` _do not_ have property

// with value of at `params` , `""` empty string - generic "error" ,

// _and_ returned `responseText` contain "Invalid" ,

// _or_ `textStatus` : `error` , `reject` `dfd` , call `.fail()`

// else `resolve `dfd` , call `.done()`

// check params

var test = [xml["data"] || jqxhr["data"]].every(function(v, k) {

return !(v.data["param1"] !== "" && v.data["param2"] !== "")

}) ;

// check `xml` responseText for node for "Invalid" text ,

// generate `.fail()`

var check = $(xml.children)

.find("value").is(":contains(Invalid)");

return check && test || textStatus === "error"

// call `.fail()`

? _response.reject([xml, textStatus, jqxhr])

// call `.done()`

: _response.resolve([xml, textStatus, jqxhr])

});

return _response

.done(function (xml) {

// do `done()` stuff

console.log(xml[0], xml[1], xml[2]);

var msg = $(xml[0].children).find("value").html();

$("#success")

.html(msg + ", "

+ xml[2].data.data.param1

+ xml[2].data.data.param2

);

return this.promise()

})

.fail(function (xml) {

// do `.fail()` stuff

console.log(xml[0], xml[1], xml[2], "fail");

var msg = $(xml[0].children).find("value").html()

|| xml[1] + ", " + xml[2];

$("#error")

.html(msg);

return this.promise()

});

};

然后可以调用request(),没有_xmlResponse PARAM,应同时处理产生.fail()(如果responseText含有“无效”)和净误差.fail()呼叫(例如,statusCode500; textStatuserror)和.done()呼叫。

request("someAction.do", "param1_param", "param2_param");

任选地,链返回promise从request在.always(),作为包含request返回值data阵列;在.done()或fail()

request("someAction.do", "param1_param", "param2_param")

.always(function(data) {

// do `.done()` , `.fail()` stuff ,

// `data, textStatus, jqxhr`

console.log(data[0], data[1], data[2])

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值