当前位置: 首页 > 面试题库 >

在ajax回调函数之外使用变量

敖涵容
2023-03-14
问题内容

在回调函数之外使用全局变量的最佳方法是什么?

    var icon; 
    $(function(){

      $.get('data.xml', function(xml){

           icon = xml.documentElement.getElementsByTagName("icon");
           //this outputs a value
           console.log(icon);
       });
       //this is null
       //How can this maintain the value set above?
       console.log(icon);
    });

问题答案:

您提供的代码是完全有效的,并且实际上icon 可以 “保持”其价值。问题可能是get()异步运行的-仅
'data.xml'服务器完全加载后才调用匿名函数。因此,现实世界中的执行顺序如下所示:

  1. 调用get('data.xml', function(xml){...}) (开始加载data.xml)
  2. 通话console.log(icon)icon目前仍为null)
  3. (data.xml中完成载入) 现在 匿名函数被调用时,其分配值给图标:icon = xml.documentElement.getElementsByTagName("icon")

如果你想要做一些事情的价值icon之后 的“data.xml中”已被提取,那么你需要做的是 内部 匿名回调函数。像这样:

var icon; 
$(function(){

  $.get('data.xml', function(xml){
       icon = xml.documentElement.getElementsByTagName("icon");
       console.log(icon);
   });
});

祝好运!

注意:您仍然可以使用icon从代码, 外面 的匿名功能,但你需要等待来访问它,直到
匿名函数已经运行。最好的方法是将相关代码放入其自己的函数中,然后从回调函数中调用该函数:

var icon; 
$(function(){

  $.get('data.xml', function(xml){
       icon = xml.documentElement.getElementsByTagName("icon");
       loadIcon();
   });

   function loadIcon() {
       console.log(icon);
       // ... do whatever you need to do with icon here
   }
});


 类似资料:
  • 问题内容: 我有以下代码 现在,测试var应该像控制台那样将false设置为true。但是test var给了我不确定的原因? 问题答案: 可能是因为Validate.fail(test)在异步调用之后立即发生。请记住,它是异步的,这意味着它与页面上运行的javascript并行执行。

  • 问题内容: 我有一个ajax电话。我将返回值(数据)放在一个名为mydata的变量中。我想在ajax调用之外使用该变量。请注意,我无法将代码合并到ajax调用的成功部分中。我不会详细说明原因,因为这会增加混乱。所以问题很简单。有没有办法在该ajax调用之外使用ajax调用的返回值?预先感谢您的答复。干杯。马克 问题答案: 简短的答案:不,您不能这样做,因为AJAX中的A代表“异步”,因此脚本不会“

  • 问题内容: $.getJSON(“http://192.168.1.9:8983/solr/db/select/?wt=json&&start=0&rows=100&q="+query+"&json.wrf=?", function(result){ //$.each(result.response.docs, function(result){ 我得到我必须使ajax调用异步的问题。所以我确实喜

  • 问题内容: 我正在使用jQuery的网页上工作。我有一个Ajax调用,它从服务器获取数据并更新div。在该数据内部有一个jQuery函数,但是在将数据加载到页面中之后未调用该函数。我已经在页面中包含了正确的js文件。 这是从Ajax调用返回并放入div的内容: 将html插入页面后,如何使返回的javascript运行? (我将Rails与jRails插件结合使用) 问题答案: 如果要对具有htm

  • 问题内容: 我已经审查了很多有关此类问题的答案,但现在我对最佳方法感到困惑。鉴于最新的jquery,我想 调用一个ajax函数 做ajax处理(成功或错误)//正常工作 成功或错误时,将状态返回到调用函数以进行进一步处理 在调用函数(doAjax)中,如何等待回调,然后完成对成功或错误的处理(在这种情况下,成功时清除表格,错误时保持原样) 感谢任何建议, Art [EDIT] 你们发现有一个错字,

  • 问题内容: 当用户单击链接时,我需要调用ColdFusion函数(存在于.cfm文件中)。我想使用jQuery做到这一点。我有一个jQuery片段,看起来像- 我对jQuery和AJAX都是新手,所以在这里听起来我很幼稚。我应该使用AJAX调用ColdFusion函数吗?诸如请求在服务器上执行特定功能之类的东西。 在这方面的任何帮助,表示赞赏。 干杯。 问题答案: 如果您的cfm中有多个功能(即使