簡體   English   中英

jQuery ajax請求代理

[英]jQuery ajax request proxy

我如何使用jQuery執行以下操作:

  1. 有些庫通過$ .ajax發送ajax請求
  2. 我需要捕獲所有這些請求,並在某些情況下中止它們,而是傳遞另一個數據。

我發現,在jQuery 1.5中引入了新方法,例如ajaxPrefilterajaxTransport 我也試過ajaxSetupbeforeSend ,但我不能達到2分這些工作的?

除非你確定自己在做什么,否則不要使用它

我不確定ajax intercepter庫。 但我可以告訴你討厭的黑客

  • 獲取原始jquery ajax實例的副本

      var oldAjaxInstance; //some global variable oldAjaxInstance = $.ajax; //in document load 
  • 並將您的intercepert方法分配給$ .ajax指針

      $.ajax = myAjaxwrapper; 

myAjaxwrapper看起來像這樣的東西

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
}
  • 並且你的ajax調用成功將你的ajax包裝器重新分配給jquery ajax

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

奇怪,但它只適用於兩種方法:)

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;

好的,這個問題已在jQuery 1.5.1中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM