2013-12-08 52 views
4

通過在$就jQuery的延遲的方法和AJAX beforeSend()

  • 成功回調使用延遲目的可通過deferred-method done()
  • 誤差回調ACN由deferred-method fail()
  • 替換替換和完整的回調可以通過替換always()

使用

var jqxhr = $.ajax({ 
       url: Config.baseUrl+"/ajax/favourites/set-favourite.ajax", 
       dataType: "json", 
       data: attrs, 
       type: "POST", 
       beforeSend: function(){ 
        console.log("before send"); 
       } 
      }); 

我怎樣才能使用遞延對象實施beforeSend-callback

我爲什麼不使用$.ajax函數內beforeSend回調? 由於請求位於模型實例(http://canjs.com/docs/can.Model.model.html#section_Non_standardServices) 之內,因此模型對象執行請求並且所有其他的後綴,如操縱DOM將在延遲對象中完成。 我想在發送ajax請求之前操縱DOM。

我怎麼能這樣做?

+0

我不認爲你可以(除非它是一個「進步」,但我猜它會在返回的承諾被構造之前被解僱)。爲什麼你需要回調呢? – Bergi

+0

正如我寫的...我想在發送ajax請求之前操縱DOM。 – JuKe

+0

當您將延期方法添加到返回的承諾時,請求已經完成,因此您不能在事後添加需要預先執行的請求。也許你可以綁定一個默認的beforeSend(使用$ .ajaxSetup)? – towr

回答

-1

你可以連接全球的jQuery事件ajaxStart到任何元素觸發您的AJAX請求。這應該基本上覆制beforeSend的功能。

$(".ajax").ajaxStart(function() { 
    $(".document").append("AJAX begun"); 
}); 

Fiddle