2015-12-05 27 views
1

我遇到了一些JavaScript代碼問題。JavaScript JSON數據問題 - 警告不會在每個循環中顯示

我沒有在每個循環區域後收到警報。

這裏是整個代碼:

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(); 
+0

'$ .getJSON(thedata' ???)當此方法需要字符串URL時,您正在傳遞數組。我不確定你在這裏期待什麼? http://api.jquery.com/jquery.getjson/相反,解釋你的預期行爲?!我猜你想要:'$ .getJSON(this.url,thedata,function(data){...});' –

+0

如果您評論'$ .getJSON()'方法,您的代碼按預期工作,也許這就是你試圖做/測試?... –

回答

1

[用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>

+0

'$ .getJSON()'將字符串解析爲js對象?那怎麼樣? –

+0

... XD我的壞〜我編輯它2s – Blag

+0

好的,是的,你的代碼現在與我的數據一起工作。我檢查過,數據應該是JSON,而不是我在那裏得到的數據。如果我的數據是json格式,我怎麼能改變你的例子來讀取json? – Error2015