JQuery処理jsonとajaxがJSONインスタンスを返す

3122 ワード

一、JSONの基礎知識.
1、JSONのオブジェクトは"{}"によって識別され、1つの"{}"は1つのオブジェクトを表し、例えば{"AreaId":"123"}のように、オブジェクトの値はキー値ペアの形式(key:value)である.
2、「[]」は配列を識別し、配列内部の各データ間は「,」で分割され、例えば[「AreaId」:[123],[AreaId]:[345]]である.
多くの場合、オブジェクト配列です.
[{“AreaId”:”123”},{“AreaId”:”345”}]

実は配列もオブジェクトで、上のフォーマットもこのように書くことができます.
{“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}

これは1つのAreaオブジェクトを表し、彼は2つのサブデータを持っており、各サブデータも1つのオブジェクトであり、各サブオブジェクトはAreaIdである.
JSONにおける文字列と文字の定義形式は、一般的なクラスC言語定義と類似しており、二重引用符定義文字列、一重引用符定義文字である.
JSONのキー(Key)は二重引用符で囲まれており、例えば上の「Area」と「AreaId」は二重引用符で囲まれており、一部の言語でJSON文字列を構築する際には、エスケープ文字を用いて二重引用符をエスケープすることができる.
二、javascript操作JSON文字.
1、JSON文字列とJSONオブジェクトを区別する
JSON文字列:
Var strJSON = “{“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}”

実際にはこう書くこともできます.
Var strJSON = ‘{“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}’

これはJSON文字列を表しています.Jsでは一重引用符と二重引用符のどちらも一つの文字列を表すことができるので、上の最初の二重引用符と二番目の二重引用符のどちらもJSON文字列を表しています.
JSONオブジェクトを見てみましょう.
Var JSON = {“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}

見たでしょう、JSONオブジェクトの一番外側には一重引用符や二重引用符がありません.これはJSONオブジェクトを表しています.
三、jquery操作JSON文字.
jsに戻った後の処理:最初にevalで変換する:文字列の場合evalでJsonオブジェクトに変換する(以下)
var arr = '{"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}}';
//W3C   ,        eval           JS  。      (),   eval       ,       (  {} if      )
var dataObj = eval("("+arr+")");
  $.each(dataObj,function(idx,item){   
   //    
   alert(item.id+"  "+item.name);   
})

2つ目:変換する必要はありません:
var arr = {"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}};
  $.each(arr,function(idx,item){     
   //  
   alert(item.id+"  "+item.name);
})

ループには2つの方法があります.
方法1:
$.each(arr,function(idx,item){     
   //  
   alert(item.id+"  "+item.name);
})
メソッド2:
for(var key in arr){
  alert(key);
  alert(arr[key].status);
 }

四、ajaxがJSONに戻るときの処理方法.
$.ajax({ 
           type: "post", 
           url: "Default.aspx", 
           dataType: "json", 
           success: function (data) { 
              $("input#showTime").val(data[0].demoData); 
           }, 
           error: function (XMLHttpRequest, textStatus, errorThrown) { 
               alert(errorThrown); 
           } 
});

バックグラウンドでデータを渡すコードです
Response.Clear(); 
Response.Write("[{"demoData":"This Is The JSON Data"}]"); 
Response.Flush(); 
Response.End();

このような処理は、伝達するデータを直接jsonデータとして解析する、すなわち、ここでのフロントjsコードは、data[0]のような文字列データではなくjsonオブジェクトデータとして直接解析することができる.demoData、ここではこのjsonオブジェクトデータを直接使用します