首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery / Ajax - $.ajax()传递参数给回调--这是一个好的模式吗?

jQuery / Ajax - $.ajax()传递参数给回调--这是一个好的模式吗?
EN

Stack Overflow用户
提问于 2009-07-28 21:28:11
回答 3查看 63.9K关注 0票数 73

我从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名称。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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?

票数 96
EN

Stack Overflow用户

发布于 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中,并返回回调函数,等待执行。

票数 30
EN

Stack Overflow用户

发布于 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从上下文中检索它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1194104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档