2014-02-13 99 views
0

如果我做一個jQuery的AJAX調用:

$.ajax({url: 'example.com', data: {bar: 2}).done(handleResponse); 

有沒有什麼辦法可以讓我通過Ajax請求(即數據選項。)從響應處理程序中的參數?換句話說,我希望能夠做到:

handleResponse = function(response) { 
    var requestData = response.something.something.data; 
    // requestData.bar == 2 
} 

而僅僅是明確的,我知道我可以通過使用「部分」從像下劃線庫做到這一點,即:

var data = {bar: 2}; 
$.ajax({url: 'example.com', data: data).done(_(handleResponse).partial(data)); 

handleResponse = function(data, response) {... 

但我只是想知道是否有任何其他(更乾淨)的方式來使用參數jQuery傳遞給響應處理程序。

回答

4

我不太明白你的代碼的其餘部分,但考慮到第一部分:

$.ajax({url: 'example.com', data: {bar: 2}).done(handleResponse); 

您可以訪問在處理程序中的數據:

handleResponse = function(response) { 
    var requestData = this.data; 
    // requestData.bar == 2 
} 

this包含通過選項至$.ajax,除非您還通過了context選項。

+0

這太棒了,但有幾件事情:1)是不是可以從參數中獲取該信息(因爲將處理程序綁定到另一個'this'通常很方便,這會讓我失去'this.data')? 2)'this.data'看起來像'bar = 1&bax = 2 &...';數據是否存在於更友好的(即JS對象字面量)形式中? – machineghost

+0

1)正確的,你不能得到它的參數。 2)這非常有趣...我沒想到它會給你$ .param()的d版本。如果你不想自己寫一個,可以使用現有的querystring解析插件。 –

+0

Gotcha;好,response.foo.request.data本來不錯,但'parse(this.data)'比沒有好。謝謝。 – machineghost

相關問題