jQuery / Ajax -$.ajax () передача параметров для обратного вызова-хороший шаблон для использования?
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
или имя Элем.
2 ответа:
такой...
function doSomething(url, elem) { $.ajax({ type: "GET", url: url, dataType: "xml", success: function(xml) { rssToTarget(xml, elem); } }); }
ответа на ваш комментарий: влияет ли использование анонимных функций на производительность?
шаблон, который вы хотели бы использовать может работать, если вы создадите закрытие внутри вашей функции rssToTarget:
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)
выполняется, параметр элемента хранится в закрытие, и функция обратного вызова возвращается, ожидая выполнения.