ajax 302 오류 점프 불가
1. 스스로 ajax 재 작성 방법: 추천 하지 않 음
var Ajax = function() {
var that = this;
//
that.createXHR = function() {
if (window.XMLHttpRequest) { // IE7+、Firefox、Opera、Chrome Safari
return new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE6
var versions = [ 'MSXML2.XMLHttp', 'Microsoft.XMLHTTP' ];
for (var i = 0, len = versions.length; i < len; i++) {
try {
return new ActiveXObject(version[i]);
break;
} catch (e) {
//
}
}
} else {
throw new Error(' XHR !');
}
}
//
that.init = function(obj) {
//
var objAdapter = {
method : 'get',
data : {},
success : function() {
},
complete : function() {
},
error : function(s) {
alert('status:' + s + 'error!');
},
async : true
}
// JS IE
that.url = obj.url + '?rand=' + Math.random();
that.method = obj.method || objAdapter.method;
that.data = that.params(obj.data) || that.params(objAdapter.data);
that.async = obj.async || objAdapter.async;
that.complete = obj.complete || objAdapter.complete;
that.success = obj.success || objAdapter.success;
that.error = obj.error || objAdapter.error;
}
// get
that.get = function(obj) {
var xhr = that.createXHR(); // XHR
that.init(obj);
if (that.async === true) { // true ,false
// , readystatechange
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) { //
that.callback(obj, this); //
}
};
}
// GET , url
that.url += that.url.indexOf('?') == -1 ? '?' + that.data : '&'
+ that.data;
// XHR , open() ,
// : (get、post)、 URL 。
xhr.open(that.method, that.url, that.async);
xhr.send(null); // get null
if (that.async === false) { //
that.callback(obj, this); //
}
}
// ,
that.callback = function(obj, xhr) {
console.log("ajax http code :" + xhr.status)
if (xhr.status == 200) { // http ,200
obj.success(xhr.responseText); //
} else {
//
console.log(' ! :' + xhr.status + ', :' + xhr.statusText);
top.location.href = "/home";
}
}
//
that.params = function(data) {
var arr = [];
for ( var i in data) {
// encodeURIComponent()
arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]));
}
return arr.join('&');
}
return {
get : that.get,
}
}
이 항목 은 자체 적 으로 jquery 의 ajax 요청 을 사용 합 니 다. 모든 요청 이 제 가 정의 한 ajax 세트 로 302 를 처리 하면 운동량 이 비교적 많 기 때문에 jquery 의 ajax 를 계속 사용 하 는 것 을 선택 하면 이 잘못된 문 제 를 어떻게 처리 합 니까?
ajax 는 우리 에 게 ajax Setup 방법 을 제공 합 니 다. 리 셋 을 예비 처리 할 수 있 습 니 다. 우 리 는 이 방법 만 복사 하면 ajax 의 반환 값 의 논 리 를 처리 할 수 있 습 니 다. 코드 는 다음 과 같 습 니 다.
/**
* ajax 302
*/
$.ajaxSetup({
// , get
type:'post',
//
success: function () {
console.log(' ')
},
//
error: function () {
console.log(' ')
},
// 。 success error
complete: function (XMLHttpRequest,status) {
if(status === 'error'){
// , error
// top iframe ,
top.location.href = "/home";
}
},
})