首頁 >web前端 >js教程 >深入分析jquery解析json資料_jquery

深入分析jquery解析json資料_jquery

WBOY
WBOY原創
2016-05-16 16:28:091338瀏覽

我們先以解析上例中的comments物件的JSON資料為例,然後再小結jQuery中解析JSON資料的方法。

JSON資料如下,是一個巢狀JSON:

複製程式碼 程式碼如下:

{"comments":[{"content":"很不錯」,"id":1,"nickname":"納尼"},{"content":"喲西喲西","id":2 ,"nickname":"小強"}]}

取得JSON數據,在jQuery中有一個簡單的方法 $.getJSON() 可以實作。

以下引用的是官方API對$.getJSON()的說明:

jQuery.getJSON( url, [data,] [success(data, textStatus, jqXHR)] )

urlA string containing the URL to which the request is sent.

dataA map or string that is sent to the server with the request.

success(data, textStatus, jqXHR)A callback function that is executed if the request succeeds.

回呼函數中接受三個參數,第一個書回傳的數據,第二個是狀態,第三個是jQuery的XMLHttpRequest,我們只使用到第一個參數。

$.each()是用來在回呼函數中解析JSON資料的方法,以下是官方文件:

jQuery.each( collection, callback(indexInArray, valueOfElement) )

collectionThe object or array to iterate over.

callback(indexInArray, valueOfElement)The function that will be executed on every object.

$.each()方法接受兩個參數,第一個是需要遍歷的物件集合(JSON物件集合),第二個是用來遍歷的方法,這個方法又接受兩個參數,第一個是遍歷的index,第二個是目前遍歷的值。哈哈,有了$.each()方法JSON的解析就迎刃而解咯。 (*^__^*) 嘻嘻……

複製程式碼 程式碼如下:

function loadInfo() {
    $.getJSON("loadInfo", function(data) {
        $("#info").html("");//清空info內容         $.each(data.comments, function(i, item) {
            $("#info").append(
                    "
" item.id "
"
                    "
" item.nickname    "
"        
        });
        });
}

正如上面,loadinfo是請求的位址,function(data){...}就是在請求成功後的回呼函數,data封裝了返回的JSON對象,在下面的$.each(data.comments,function (i,item){...})方法中data.comments直接到達JSON資料內所包含的JSON陣列:

複製程式碼 程式碼如下:

[{"content":"很不錯」,"id":1,"nickname":"納尼"},{"content":"喲西喲西","id":2,"nickname": "小強"}]

$.each()方法中的function就是對這個陣列進行遍歷,再透過操作DOM插入到適當的地方的。在遍歷的過程中,我們可以很方便的存取目前遍歷index(程式碼中的”i“)和目前遍歷的值(程式碼中的”item“)。

上例的運行結果如下:

如果傳回的JSON資料比較複雜,只需多些$.each()進行遍歷即可,嘿嘿。例如如下JSON資料:

複製程式碼 程式碼如下:

{"comments":[{"content":"很不錯」,"id":1,"nickname":"納尼"},{"content":"喲西喲西","id":2 ,"nickname":"小強"}],
"content":"你是木頭人,哈哈。","infomap":{"性別":"男","職業":"程式設計師",
"部落格":"http://www.xxx.com/codeplus/"},"title":"123木頭人"}

js如下:

複製程式碼 程式碼如下:

関数loadInfo() {
$.getJSON("loadInfo", function(data) {
$("#title").append(data.title "
");
$("#content").append(data.content "
");
//jquery は地図データを解析します
$.each(data.infomap,function(key,value){
$("#mapinfo").append(key "----" value "

");
});
//配列を解析
$.each(data.comments, function(i, item) {
$("#info").append(
"
" item.id "
" 「
」アイテム.ニックネーム「
」 "
" item.content "

");
});
});
}


$.each() が Map を走査するとき、function() のパラメータはキーと値であり、これは非常に便利であることに注目する価値があります。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn