Javascript 只有当数据来自循环GET请求时,JSON stringify才会失败

Javascript 只有当数据来自循环GET请求时,JSON stringify才会失败,javascript,jquery,json,get,Javascript,Jquery,Json,Get,因此,当我试图创建JSON字符串时,我遇到了一个问题。只有当用于构建将被字符串化的对象/数组的数据来自循环中的GET请求时,才会出现问题 当我将实际的javascript对象发布到控制台时,它包含所有正确的信息。但无法生成有效的JSON字符串。我已经在下面的例子中测试了这个方法,并且知道它是有效的。我得出的结论是,这与GET请求有关。我尝试了一些解决方案;玩变量范围,异步流控制,但仍然没有运气。因此我在这里。我错过了什么 谢谢大家 以下是有问题的代码: var start = 1518; va

因此,当我试图创建JSON字符串时,我遇到了一个问题。只有当用于构建将被字符串化的对象/数组的数据来自循环中的GET请求时,才会出现问题

当我将实际的javascript对象发布到控制台时,它包含所有正确的信息。但无法生成有效的JSON字符串。我已经在下面的例子中测试了这个方法,并且知道它是有效的。我得出的结论是,这与GET请求有关。我尝试了一些解决方案;玩变量范围,异步流控制,但仍然没有运气。因此我在这里。我错过了什么

谢谢大家

以下是有问题的代码:

 var start = 1518;
var end = 1522;
var eventList = {};
eventList['event'] = [];

for (var i = 0; i < (end - start); i++) {
  $.get('https://www.someaddress.com/events/index.php?view=' + (start + i), function(response) {

    var eventRep = $(response).find('h2').text();
    var categoryRep = $(response).find('span.center-name').text();
    var descriptionRep = $(response).find('div.description.col-md-9').find('p').text();

    var eventScrape = {
      "title": eventRep,
      "category": categoryRep,
      "description": descriptionRep
    };
    //alert(eventRep); 
    eventList['event'].push(eventScrape);
  });
}

var str = JSON.stringify(eventList, undefined, 4);
console.log(eventList);
console.log(str);
以下是我想要的工作示例:

  var eventList = {};
  eventList['event'] = [];


  for (var i = 0; i < 5; i++) {
    var eventRep = "Event title " + i;
    var categoryRep = "Event category " + i;
    var descriptionRep = "Event description " + i;

    var eventScrape = {
      "title": eventRep,
      "category": categoryRep,
      "description": descriptionRep
    };

    eventList['event'].push(eventScrape);
    //alert(i);
  }

  var str = JSON.stringify(eventList, undefined, 4);
  console.log(eventList);
  console.log(str);
$.get是以异步方式执行的,所以请将代码放在get函数中

解决方案代码

var start=1518; var-end=1522; var eventList={}; 事件列表['event']=[]; 对于var i=0;i<结束-开始;i++{ $获得'https://www.someaddress.com/events/index.php?view=“+start+i,函数响应{ var eventRep=$response.find'h2'。文本; var categoryRep=$response.find'span.center name'。文本; var descriptionRep=$response.find'div.description.col-md-9'.find'p'.text; var eventScrape={ 标题:eventRep, 类别:categoryRep, description:descriptionRep }; //alerteventRep; 事件列表['event'].pusheventscrap; //由于$.get是异步数据,因此将以异步方式加载数据,因此除非数据可用,否则无法访问它 var str=JSON.stringifyeventList,未定义,4; console.logeventList; console.logstr; };
}非常感谢,非常感谢。现在说得通了,我知道我一定忽略了什么。让我有点发疯。
  var eventList = {};
  eventList['event'] = [];


  for (var i = 0; i < 5; i++) {
    var eventRep = "Event title " + i;
    var categoryRep = "Event category " + i;
    var descriptionRep = "Event description " + i;

    var eventScrape = {
      "title": eventRep,
      "category": categoryRep,
      "description": descriptionRep
    };

    eventList['event'].push(eventScrape);
    //alert(i);
  }

  var str = JSON.stringify(eventList, undefined, 4);
  console.log(eventList);
  console.log(str);
{  
   "event":[  
      {  
         "title":"Event title 0",
         "category":"Event category 0",
         "description":"Event description 0"
      },
      {  
         "title":"Event title 1",
         "category":"Event category 1",
         "description":"Event description 1"
      },
      {  
         "title":"Event title 2",
         "category":"Event category 2",
         "description":"Event description 2"
      },
      {  
         "title":"Event title 3",
         "category":"Event category 3",
         "description":"Event description 3"
      },
      {  
         "title":"Event title 4",
         "category":"Event category 4",
         "description":"Event description 4"
      }
   ]
}