jquery 解析json與json 例子

jquery處理網頁特效on的方法javascript

jquery處理json的方法是直接eval,給一個變量,可是,今天看到其源代碼,證實個人想法完全錯了。html

  它先斷定有沒有window.json.parse這個方法,若是有,直接用這個方法解析,若是沒有,會new一個匿名函數,裏面的內容,就是返回json的執行結果。java

  我試了一下,window.json這個對象,在firefox/webkit的瀏覽器中存在,但ie6-ie8都沒有。jquery

  另外,若是你們須要解析json字符串,能夠直接使用jquery的parsejson方法,雖然這個方法在手冊中沒有出現,例:web

var json_str = '{"a":1, "b":2}';ajax

 var data = $.parsejson(json_str);
 alert(data.a)

更詳細的json處理方法與原理json

jquery異步獲取的數據類型——網頁特效on對象和字符串爲依據,分別介紹兩種方式獲取到的結果處理方式。
1.對於服務器返回的網頁特效on字符串,若是jquery異步請求沒作類型說明,或者以字符串方式接受,那麼須要作一次對象化處理,方式不是太麻煩,就是將該字符串放於eval()中執行一次。這種方式也適合以普通javascipt方式獲取json對象,如下舉例說明:c#

var dataobj=eval("("+data+")");//轉換爲json對象 
alert(dataobj.root.length);//輸出root的子對象數量 
$.each(dataobj.root,fucntion(idx,item){ 
if(idx==0){ 
return true; 
}


//輸出每一個root子對象的名稱和值瀏覽器

alert("name:"+item.name+",value:"+item.value); 
})

注:對於通常的js生成json對象,只須要將$.each()方法替換爲for語句便可,其餘不變。
2.對於服務器返回的json字符串,若是jquery異步請求將type(通常爲這個配置屬性)設爲「json」,或者利用$.getjson()方法得到服務器返回,那麼就不須要eval()方法了,由於這時候獲得的結果已是json對象了,只需直接調用該對象便可,這裏以$.getjson方法爲例說明數據處理方法:服務器

$.getjson("http://gaoyusi.blog.163.com/",{param:"gaoyusi"},function(data){

//此處返回的data已是json對象 
//如下其餘操做同第一種狀況
$.each(data.root,function(idx,item){ 
if(idx==0){ 
return true;//同countinue,返回false同break 
}
alert("name:"+item.name+",value:"+item.value);
}); 
});

jquery處理json數據實例

<title>jquery獲取json數據演示頁面</title>
    <script type="text/網頁特效" src="js/jquery-1.2.1.pack.js"></script>
    <script type="text/javascript">
    function getdata(){
    $("#list").html("");//清空列表中的數據
   //發送ajax請求
    $.getjson(
    "jsondata.ashx",//產生json數據的服務端頁面
    {name:"test",age:20},//向服務器發出的查詢字符串(此參數可選)
   //對返回的json數據進行處理,本例以列表的形式呈現
    function(json){
   //循環取json中的數據,並呈如今列表中
    $.each(json,function(i){
    $("#list").append("<li>name:"+json[i].name+"&nbsp; age:"+json[i].age+"</li>")
    })
    })
    }
    </script>

asp教程.net

:<%@ webhandler language="c#" class="jsondata" %>

using system;
using system.web;

public class jsondata : ihttphandler {
        public void processrequest (httpcontext context) {
        context.response.contenttype = "text/plain";
        string data = "[{name:\"ants\",age:24},{name:\"lele\",age:23}]";//構建的json數據
       //下面兩句是用來測試前臺向此頁面發出的查詢字符
        string querystrname = context.request.querystring.getvalues("name")[0];//取查詢字符串中namer的值
        string querystage = context.request.querystring.getvalues("age")[0];//取查詢字符串中age的值
        
        context.response.write(data);
    }
   public bool isreusable {
        get {
            return false;
        }
    }

}

相關文章
相關標籤/搜索