2014-01-14 132 views
1

我想提出一个Ajax调用如下:如何将附加参数传递给ajax回调函数?

util.AjaxCall(url,successCallbackFunction,errorCallbackFunction); 

function successCallbackFunction(result){ 
    //Ajax returns result 
} 

一切工作正常,但我要过我自己的参数,可用上“successCallbackFunction”之一。

喜欢的东西

function successCallbackFunction(result, passedParameter){ 
} 

我怎么能这样做?

注意:我没有访问util.AjaxCall源代码(我无权更改该代码)。

+2

使用闭包/匿名函数retreive您的数据。 – SLaks

+0

什么是'passedParameter'它是由你还是'util.AjaxCall()'方法创建的 –

+0

@SLaks:如果我使用那个,我怎样才能将我自己的参数和ajax返回的数据结合起来? – user3191903

回答

2

您可以使用bind

util.AjaxCall(url, 
       successCallbackFunction.bind(this, passedParameter), 
       errorCallbackFunction); 

第一个参数是职能范围和你的情况propably可以忽略不计。

然后将触发successCallbackFunction与附加(前置)参数:

function successCallbackFunction(passedParameter, result){} 
+0

Ajax结果呢? – user3191903

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fbind根据这篇文章的论点是通常发送给回调的参数的前缀。此外,某些版本的IE不支持通过绑定进行卷曲。 – Gabriel

+1

是的,当然他们是前置的,感谢更正@Gabriel –

0

通常情况下,当你发送/接收Ajax请求您JSON格式进行数据交换。 ,以便您可以接收您的数据作为JSON对象。

例如,如果线下是通过Ajax调用

{"firstname":"john","lastname":"doe"} 

返回的结果,那么你可以通过

function successCallbackFunction(result){ 
    var obj = jQuery.parseJSON(result); // if you are using Jquery if not use eval 
    // var obj = eval(result);   // this is not recommeneded for security issue. 
    var firstname = obj.firstname; 
    var lastname = obj.lastname; 
} 
+0

或者如果您使用的是现代浏览器,只需致电'JSON.parse()来' – rexcfnghk

相关问题