2014-02-13 63 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

相关问题