function firstCallme(iWantToBePassed) {
post(callbackFun);
}
// This function shouldn't be anonymous.
function callbackFun(dataFromPostFun) {
alert(iWantToBePassed);
}
如何将变量 iWantToBePassed 从 firstCallme()传递给 callbackFun()? SO中有几个类似的问题。但我无法从中找出解决方案。
我只知道下面给出的一个解决方案:
function firstCallme(iWantToBePassed) {
post(function(data){callbackFun(data,iWantToBePassed) });
}
// This function shouldn't be anonymous.
function callbackFun(dataFromPostFun, iWantToBePassed) {
alert(iWantToBePassed);
}
有没有更好的解决方案?
更新:
这里:
function post(callbackFun) {
jQuery.post('url', 'data', callbackFun, 'json');
}
答案 0 :(得分:2)
由于在post
之后调用了回调函数,因此将参数传递给回调函数的唯一方法是使用某种形式的Closure,就像您在问题中提到的解决方案中所示。
您还可以发布参数iWantToBePassed
并从回调函数中帖子中的数据中检索它。但除非您在服务器上需要该参数,否则我不建议使用此路由。
答案 1 :(得分:1)
只需调用带有参数to的callbackFun函数即可。
函数之后的参数是发布的,你不必告诉JavaScript浏览器发帖,它已经知道它必须在括号之间声明它时将一个变量发送(传递)给一个函数。
function firstCallme(iWantToBePassed) {
callbackFun(iWantToBePassed);
}
function callbackFun(dataFromPostFun) {
alert(dataFromPostFun);
}
*编辑:
jQuery.post函数是一个异步的javascript调用(用于获取没有页面加载的数据)。
因此,当使用jQuery.post时,您可以将参数传递给php脚本,例如从中获取答案。例如,$ .ajax()就是一个简写函数。
使用jQuery.post将'data'发送到'url','callbackFunction'是处理答案的函数。你问题中的'json'是数据类型。
在你的情况下,这将是这样的:
function firstCallme(postData){
jQuery.post("url.php", postData, callbackFun(data), "json");
}
callbackFun(successData){
console.log(successData);
}
答案 2 :(得分:0)
以这种方式试试:http://jsfiddle.net/6WxfF/
function firstCallme(iWantToBePassed) {
callbackFun(iWantToBePassed);
}
function callbackFun(dataFromPostFun) {
post(dataFromPostFun);
}
function post(callbackFun) {
jQuery.post('url', 'data', callbackFun, 'json');
}
$(function() {
var hel = "Hello";
firstCallme(hel);
});
答案 3 :(得分:0)
将post
重写为:
function post(callbackFun, param) {
jQuery.post('url', 'data', function() { callbackFun(param); }, 'json');
}
并称之为:
function firstCallme(iWantToBePassed) {
post(callbackFun, iWantToBePassed);
}