Переопределение ajax-запроса на изменение URL-адреса перед выполнением запроса - PullRequest
0 голосов
/ 27 июня 2018

Я пишу скрипт, который может перенаправлять запрос 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;

Мне нужно предположение, что это возможно, правильно я делаю? По поводу аякса запрос возможен?

Я хочу менять URL-адрес при каждом запросе ajax!

Вы можете мне помочь? Что не так в этом коде, если возможно переопределить ajax-запрос, прежде чем он попадет на сервер?

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете использовать этот блок кода, (jquery ajax) (вы можете создать файл javascript утилиты и поместить этот код в этот скрипт утилит. А затем использовать каждый где)

  • httpMethod => POST, GET, .....
  • url => URL запроса
  • successHandler => функция вашего успешного обработчика
  • errorHandler => функция вашего обработчика ошибок
  • timeout => время ожидания запроса
 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);
}
...