3 Stimmen

jQuery Ajax Anfrage Proxy

Wie kann ich den folgenden Vorgang mit jQuery durchführen:

  1. Einige Bibliotheken senden Ajax-Anfragen über $.ajax
  2. Ich muss alle diese Anfragen abfangen und in einigen Fällen abbrechen abbrechen und stattdessen andere Daten.

Ich habe festgestellt, dass in jQuery 1.5 wurden neue Methoden eingeführt, wie zum Beispiel ajaxPrefilter y ajaxTransport . Ich habe auch versucht ajaxSetup con beforeSend , aber ich kann nicht erreichen, dass 2 Punkte davon funktionieren...

0voto

RameshVel Punkte 62428

Verwenden Sie dies nur, wenn Sie sich verdammt sicher sind, was Sie tun.

Ich bin mir nicht sicher über die Ajax Intercepter Bibliotheken. Aber ich kann Ihnen sagen, die böse hack

  • Kopieren Sie Ihre ursprüngliche Jquery-Ajax-Instanz

          var oldAjaxInstance; //some global variable
          oldAjaxInstance = $.ajax;  //in document load
  • Und weisen Sie Ihre Intercepert-Methode dem $.ajax-Zeiger zu

          $.ajax = myAjaxwrapper;

myAjaxwrapper sieht in etwa so aus

function myAjaxwrapper(a) {
     //your logic to change the request data's
     if (you are ok to allow the ajax call) {
         //re Assgin the actual instance of jquery ajax
         $.ajax =oldAjaxInstance;           
         //and call the method
         $.ajax(a);
     }
     //Otherwise it wont be called
}
  • Und onsucess Ihrer ajax Aufruf neu zuweisen Ihre ajax Wrapper zu jquery ajax

               oldAjaxInstance = $.ajax;  
               $.ajax = myAjaxwrapper;

0voto

Alex Ivasyuv Punkte 8167

Seltsam, aber es funktioniert nur bei Paaren mit zwei Methoden :)

function enableFakeAjax(isEnable, fakeData) {
  isFakeAjax = isEnable;

  $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
    if (isFakeAjax) {
      jqXHR.abort();

      originalOptions.success(fakeData);
    }
  });

  $.ajaxSetup({
    beforeSend: function(jqXHR, settings) {
      if (isFakeAjax) {
        jqXHR.abort();
      }
    }
  });
}

enableFakeAjax(true, jsonData);
isFakeAjax = false;

0voto

Alex Ivasyuv Punkte 8167

OK, dieses Problem wurde in jQuery 1.5.1 behoben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X