我从JavaScript代码开始:
function doSomething(url) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget
});
}
我想使用的模式:
//where elem is the target that should receive new items via DOM (appendChild)
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget(elem)
});
}
我不认为我可以让回调这样工作,对吧?正确的模式是什么?我不想使用全局变量来临时保存elem
或elem名称。
发布于 2009-07-28 13:30:03
像这样..。
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: function(xml) {
rssToTarget(xml, elem);
}
});
}
对您的评论的回答:Does use of anonymous functions affect performance?
发布于 2009-07-28 13:44:29
如果您在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中,并返回回调函数,等待执行。
发布于 2022-01-12 11:47:15
开发Ajax request settings context怎么样?
function doSomething(url, elem) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: rssToTarget,
elem: elem // <- add as settings argument
});
}
rssToTarget(ans) {
elem = this.elem; // <- get it back using "this"
}
默认情况下,回调上下文是传递给$.ajax
的$.ajaxSettings
和设置的合并。因此,如果您在$.ajax
设置中添加字段,它们将进入回调上下文。也就是说,您可以使用this
从上下文中检索它们。
https://stackoverflow.com/questions/1194104
复制相似问题