【问题标题】:Javascript - How to access object outside success blockJavascript - 如何访问成功块之外的对象
【发布时间】:2015-01-15 15:23:57
【问题描述】:

我需要在 AJAX 修改后访问一个对象,但是当我尝试打印它时它显示一个空值

我该如何解决这个问题?

 $(document).ready(function(){
   var arrayLength = whatever...;
   var myArray = [];

   for (var i = 0; i < arrayLength; i++) {

       $.ajax({
           myArray: myArray,
           type: 'GET',
           dataType: 'jsonp',
           data: {},
           url: "https://api....",
           error: function (jqXHR, textStatus, errorThrown) {
               console.log(jqXHR)
           },
           success: function (response) {
               var name = response.data.name;
               var url = response.data.url;
               for(var x = 0; x < 5; x++) {
                   var pin = {name: name, url:url};
                   myArray.push(pin);
               }
           },
           async: false
       });
   }

   // I want to print myArray here
});

【问题讨论】:

  • 什么是allPinspin 推入myArray 而不是allPins 并删除myArray: myArray,
  • myArray 是如何使用的?看起来它根本没有被访问过
  • @RobH,他正在使用async: false,所以我不确定链接页面是否相关。
  • 将“myArray”属性添加到$.ajax() 参数对象的预期效果是什么?
  • @ikegami - 是的,我下意识的。没看到潜伏在底部!

标签: javascript arrays ajax object


【解决方案1】:
 $(document).ready(function(){
   var arrayLength = whatever...;
   var myArray = [];

   for (var i = 0; i < arrayLength; i++) {

       $.ajax({
           //myArray: myArray,
           type: 'GET',
           dataType: 'jsonp',
           data: {},
           url: "https://api....",
           error: function (jqXHR, textStatus, errorThrown) {
               console.log(jqXHR)
           },
           success: function (response) {
               var name = response.data.name;
               var url = response.data.url;
               for(var x = 0; x < 5; x++) {
                   var pin = {name: name, url:url};
                   //allPins.push(pin);
                   myArray.push(pin);
               }
           },
           async: false
       });
   }

   // I want to print myArray here
});

【讨论】:

  • 不会'myArray' 仍然没有填充异步:真的吗?
  • 您从async: false 更改为async: true 将导致过早到达打印。
  • 抱歉,打错了!当我将 async: false 更改为 async: true 时,它​​仍然显示一个空数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 2014-09-15
相关资源
最近更新 更多