是否可以通过Ajax请求将数据传递给没有全局变量的Callback函数?
例如这个请求函数应该通过回调函数传递passData,它应该得到正常的响应数据?!
function rquest(callback, passData){
$.ajax({
type: "POST",
url: someURL,
success: callback(passData)
});
};
function myCallback(data, passData){
var responseData = data;
var SomeOtherData = passData
//do Something
};
rquest(myCallback, "Hello World");
所以" Hello World"应该在passData中,数据应该是来自服务器的正常响应...如果我这样做,数据是" Hello World"和passData未定义。
答案 0 :(得分:5)
在匿名函数中将调用包含在提供的回调中。试试这个:
function rquest(callback, passData){
$.ajax({
type: "POST",
url: someURL,
success: function(data) {
callback(data, passData)
}
});
};
function myCallback(data, passData) {
var responseData = data;
var SomeOtherData = passData
//do Something
};
rquest(myCallback, "Hello World");
答案 1 :(得分:2)
我在下面的链接中找到了答案 - 可以使用更多模式来实现此目的 - 添加参考答案中的一些内容。
如果您在rssToTarget函数中创建closure,那么您想要使用的模式可能会有效:
function rssToTarget(element) {
return function (xmlData) {
// work with element and the data returned from the server
}
}
function doSomething(url, elem) {
$.ajax({ type: "GET",
url: url,
dataType: "xml",
success: rssToTarget(elem)
});
}
执行rssToTarget(elem)
时,元素参数存储在closure中,并返回回调函数,等待执行。