2014-01-28 162 views
0

使用下面的代碼,我在div(名爲remoteFeed
說它得到JSON數組的字符串表示:遍歷JSON數組串

{"id":"25","name":"Basil","country":"USA"} 

我的問題是如何才能得到JSON數組元素?

P1請注意,即使它顯示在div中的值 - 警報(見下文)顯示空白!

alert(data); //-------------------Shows blank 

注意:作爲新手,我試圖讓價值第一。但在這種情況下,我們必須將其轉換爲json對象。所以,如果你知道一個更好的辦法,讓我在客戶端是更明智

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 

<script type="text/javascript"> 


(function ($) { 
$(document).ready(function(){ 
    $('#remoteFeed').load('http://testservice/json/'); 

    var data = remoteFeed.innerHTML; 
    alert(data); //-------------------Shows blank 

    /* 
       var jsonObj = JSON.stringify(eval("(" + data + ")")); 
       for(var i in jsonObj) 
      { 
      var id = data[i].country_code; 
      alert(id); 
      } 

    */ 
}); 
})(jQuery); 


var data = remoteFeed.innerHTML; 
    alert(data); 

</script> 

</head> 
<body> 

     <div id="remoteFeed"></div> 

</body> 
+0

PL提供完整的代碼 - 而不是代碼片段 –

+0

我認爲你需要使用'回調函數。 load()' – Satpal

回答

1

爲什麼alert()是空白

你得到的值(ID,姓名..)在alert()呼叫中獲得空白值,因爲您沒有等待load()請求完成。考慮將回調函數傳遞給load(),而不是立即提醒該值。回調函數在請求完成後執行。

例如:

$('#remoteFeed').load('http://testservice/json/', function() { 
    alert($('#remoteFeed').html()); 
}); 

如何看待一個JSON字符串作爲對象

基本上,你可以使用在現代瀏覽器的原生JSON對象JSON字符串解析爲一個對象。

例如:

var json_object = JSON.parse(json_string); 

或者,你會好得多使用jQuery's other AJAX functions之一,是更適合這個任務比load()這是指裝載HTML。

例如:

$.getJSON('http://testservice/json/', function(json_object) { 
    for(var i in json_object) { 
     var id = json_object[i].country_code; 
     alert(id); 
    } 
}); 

在這個例子中$.getJSON()執行AJAX請求的方法,假設返回的數據是JSON格式和自動解析它。回調函數然後傳遞生成的JSON對象。

+0

可以提供完整的代碼嗎?我修改了代碼,如下所示,但不能正常工作--------------(function($){document.ready.ready(function(){。{.getJSON('http: // testservice/json /',函數(json_data){var i在json_data中){ var id = json_data [i]。國家代碼; alert(id); } }); })(jQuery); –

+0

沒有完整的代碼。我遵循你的例子。根據評論中的代碼,看起來你有一個語法錯誤。您錯過了關於'document.ready'調用的關閉'})'。無論如何,你不需要用立即執行的函數來包裝這個調用,只要執行'$(document).ready(function(){$ .getJSON ...})' – Boaz

0

要獲得JSON結果數據,可以使用jQuery.getJSON()方法

參考jQuery的網站http://api.jquery.com/jquery.getjson/

+0

上述soln都不起作用。你給的網址中的示例工作,但不是解析xml標籤(在http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?)我需要解析json。 –

+0

你好,因爲你想在json中使用fliker api數據,你只需要添加format = json。 [http://api.flickr.com/services/feeds/photos_public.gne?format=json] –