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)выполняется, параметр элемента хранится в закрытие, и функция обратного вызова возвращается, ожидая выполнения.