Javascript 如何向ajax回调函数传递附加参数?
我正在进行一个ajax调用,如下所示:Javascript 如何向ajax回调函数传递附加参数?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在进行一个ajax调用,如下所示: util.AjaxCall(url,successCallbackFunction,errorCallbackFunction); function successCallbackFunction(result){ //Ajax returns result } 一切正常,除了我必须传递一个我自己的参数才能在“successCallbackFunction”上使用之外 差不多 function successCallbackFunction(re
util.AjaxCall(url,successCallbackFunction,errorCallbackFunction);
function successCallbackFunction(result){
//Ajax returns result
}
一切正常,除了我必须传递一个我自己的参数才能在“successCallbackFunction”上使用之外
差不多
function successCallbackFunction(result, passedParameter){
}
我该怎么做
注意:我无权访问util.AjaxCall源代码(我无权更改该代码)。您可以使用
bind
:
util.AjaxCall(url,
successCallbackFunction.bind(this, passedParameter),
errorCallbackFunction);
第一个参数是函数的作用域,在您的情况下可能可以忽略不计
这将触发您的successCallbackFunction
,并带有一个附加(前置)参数:
function successCallbackFunction(passedParameter, result){}
通常,在发送/接收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;
}
使用闭包/匿名函数。什么是
passedParameter
它是由您创建的还是由util.AjaxCall()
method@SLaks:如果我使用它,如何将我自己的参数与ajax返回的数据结合起来?@ArunPJohny:由我创建的ajax结果如何?根据本文,参数是在通常发送到回调的参数之前加上的。另外,IE的某些版本不支持通过bind进行咖喱。是的,当然它们是预先准备好的,谢谢您的更正@Gabriel@Gabriel”“是的。您只需自己编写一个bind
方法,如果IE足够老,它可能不应该出现在函数.prototype
上,而应该出现在window.bindFunc
上,而且如果您打算将其用于事件侦听器,您需要跳过更多的环,以确保元素的正确传播。。。我不怀念主要使用IE6-8的工作……或者如果您使用的是现代浏览器,只需调用JSON.parse()