JavaScript JSON 数据问题 - 警报未在每个循环中显示

JavaScript JSON data issue - alert not showing in each loop

我遇到一些 javascript 代码的问题。

我没有收到每个循环区域后的数据警报。

完整代码如下:

var widget = {

    url: 'the url here', //no used yet

    readjson: function() {

       alert(this.url);   

       var  thedata = [
         {"TEST1":45,"TEST2":23,"TEST3":"DATA1"},
         {"TEST1":46,"TEST2":24,"TEST3":"DATA2"},
         {"TEST1":47,"TEST2":25,"TEST3":"DATA3"}
        ];

        alert(thedata); //I get this

            $.getJSON(thedata, function(data) {
                $.each(data, function(index) {
                    alert(data[index].TEST1); //No alert here
                    alert(data[index].TEST2); //No alert here
                });
        });

    }

};

widget.readjson();

[通过 URL 电话:] JSON 字符串的代码与下面相同,但用 AJAX 调用换行:

$.getJSON('http://exemple.com/data.json' , function(data) {
    $.each(data, function() {
      alert(this.TEST1);
      alert(this.TEST2);
    });
});

[带有 JSON 刺痛:]

var widget = {
  readjson: function() {
    var stringJsonData = '[{"TEST1":45,"TEST2":23,"TEST3":"DATA1"},{"TEST1":46,"TEST2":24,"TEST3":"DATA2"},{"TEST1":47,"TEST2":25,"TEST3":"DATA3"}]';

    alert(stringJsonData);
    data = $.parseJSON(stringJsonData);

    $.each(data, function() {
      alert(this.TEST1);
      alert(this.TEST2);
    });
  }
};

widget.readjson();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


这是一个 JSON 字符串,您可以使用 $.parseJSON() 进行解析:

   var  thedata = '[
     {"TEST1":45,"TEST2":23,"TEST3":"DATA1"},
     {"TEST1":46,"TEST2":24,"TEST3":"DATA2"},
     {"TEST1":47,"TEST2":25,"TEST3":"DATA3"}
    ]';

主要问题是您尝试使用 AJAX 调用 ($.getJSON()),将 URL 字符串作为第一个参数,并使用手工制作的 json对象事物...

现在,您只是一个 JS 对象数组,您可以像这样处理:

var widget = {
  read: function() {
    var thedata = [{"TEST1": 45,"TEST2": 23,"TEST3": "DATA1"},{"TEST1": 46,"TEST2": 24,"TEST3": "DATA2"},{"TEST1": 47,"TEST2": 25,"TEST3": "DATA3"}];

    alert(thedata); //I get this
    $.each(thedata, function(index) {
      alert(this.TEST1); //No alert here
      alert(this.TEST2); //No alert here
    });
  }
};
widget.read();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>