Подтвердить что ты не робот

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)
   });
}  

Я не думаю, что могу заставить callback работать таким образом, не так ли? Какова правильная картина? Я не хочу использовать глобальные переменные, чтобы временно удерживать имя elem или elem.

4b9b3361

Ответ 2

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