我一直在编写一个脚本,该脚本可以在互联网不可用时将AJAX请求重定向到其他服务器,在互联网可用时将请求保持在同一路由 我的脚本执行的操作相同,只要数据连接不可用,它将脚本替换为本地服务器ip,但这不会影响AJAX的功能,
var REMOTE_SERVER="http://opensupermall";
var LOCAL_SERVER="http://127.0.0.1:909";
var custom_url="";
var open = window.XMLHttpRequest.prototype.open,
send = window.XMLHttpRequest.prototype.send;
function openReplacement(method, url, async, user, password) {
custom_url = url;
if(navigator.onLine){
custom_url = url.replace(REMOTE_SERVER,LOCAL_SERVER);
}
console.log("openReplacement:"+custom_url);
this._url = custom_url;
return open.apply(this, arguments);
}
function sendReplacement(data) {
if(this.onreadystatechange) {
this._onreadystatechange = this.onreadystatechange;
}
console.log('Request sent to:'+this._url);
this.onreadystatechange = onReadyStateChangeReplacement;
return send.apply(this, arguments);
}
function onReadyStateChangeReplacement() {
console.log('Url Changed to: ', this._url);
if(this._onreadystatechange) {
return this._onreadystatechange.apply(this, arguments);
}
}
window.XMLHttpRequest.prototype.open = openReplacement;
window.XMLHttpRequest.prototype.send = sendReplacement;
我需要建议,这是我正在做的可能吗?可以跳过ajax请求吗?
我想在每个ajax请求上更改URL!
你能帮我吗?如果有可能在到达服务器之前重写ajax请求,此代码有什么问题?
答案 0 :(得分:0)
您可以使用此代码块(jquery ajax)(您可以创建实用程序javascript文件,并将这些代码放置在该util脚本中,然后在任何地方使用)
function _ajaxRequest(httpMethod, url, successHandler, errorHandler, timeout){ return { httpMethod : httpMethod, url : url, successHandler : successHandler, errorHandler : errorHandler, timeout : timeout, request : function request(requestData) { var ajaxRequest = { type : this.httpMethod, url : this.url, contentType : "application/json; charset=utf-8;", data : JSON.stringify(requestData), cache: false, timeout : this.timeout, success : function(response) { successHandler(response); }, error : function(error) { errorHandler(error) } }; $.ajax(ajaxRequest); } } }
用法=>
var tempData = {
"name" : "batuhan",
"surname" : "caglayan"
};
var url1 = "url1";
var url2 = "url2";
var tempRequest = new _ajaxRequest("POST", url1, success, error, 60000);
function success(data){
// use data
}
function error(error){
// handle error
}
function requestProcess(){
// *********************************************************
// you can change url in here like => tempRequest.url = url2
// *********************************************************
tempRequest.request(tempData);
}