JSフロントエンドがバックグラウンドサーバから返されるJSONデータを取得し解析する方法

2406 ワード

要旨:主な紹介:eval関数を使ってJSONデータを解析する;$.getJSON()メソッドサーバから返されるJSONデータを取得
JavaScript eval()関数
eval(string)関数は、文字列を計算し、JavaScriptコードを実行します.
 
パラメータstring:計算するJavaScript式または実行する文を含む計算する文字列.
このメソッドは元の文字列のみをパラメータとして受け入れ、stringパラメータが元の文字列でない場合、メソッドは変更せずに返されます.したがって、eval()関数にStringオブジェクトをパラメータとして渡さないでください.
 
eval関数を使用してjsonを解析する
サーバが返すJSON文字列を仮定します.
var data="  
{  
root:  
[  
{name:'1',value:'0'},  
{name:'6101',value:'北京市'},{name:'6102',value:'天津市'},{name:'6103',value:'上海市'},{name:'6104',value:'重慶市'},{name:'6105',value:'渭南市'},{name:'6106',value:'延安市'},{name:'6107',value:'漢中市'},{name:'6108',value:'
{name:'6109',value:'安康市'},{name:'6110',value:'商洛市'}] 
}";  
jquery非同期リクエストがタイプの説明をしていないか、文字列で受け入れられている場合は、JSON文字列をeval()に1回実行するオブジェクト化処理が必要です.
var dataObj=eval("("+data+")");//jsonオブジェクトに変換する気づいたかもしれませんが、なぜevalパラメータには「(」+data+」「)」というカッコ付きの形式が書かれているのでしょうか.
理由:
前述したように、eval()関数はパラメータ内の式を実行できます!
Jsonは「{}」で開始および終了するため、JSでは文ブロックとして扱われるため、強制的に式に変換する必要がある.
 
カッコ付けの目的は、eval関数がJavaScriptコードを処理するときにカッコ内の式(expression)を文(statement)として実行するのではなく、オブジェクトに強制的に変換することです.
たとえば、オブジェクトの字面量{}のように、外側のカッコを付けない場合、evalはカッコをJavaScriptコードブロックの開始と終了フラグとして認識し、{}は空の文を実行したとみなされます.次の2つの実行結果は異なります.
alert(eval("{}"); // return undefined 
alert(eval("({})");// return object[Object] 
このような書き方は、jsでよく見られます.
(function(){ 
 
})(jQuery);//閉包操作閉包は関数の内部と関数の外部をつなぐ橋です!
 
$を利用するgetJSON()メソッド
ヒント:eval()の機能は非常に強力ですが、実際に使用する場合は多くありません.
サーバが返すJSON文字列に対して、jquery非同期要求がtypeを「json」にするか、$を利用する.getJSON()メソッド取得サーバが戻ると、eval()メソッドは不要になります.このとき得られる結果はすでにjsonオブジェクトであるため、そのオブジェクトを直接呼び出すだけでよいので、ここでは$.getJSONメソッドは、例として、jsonデータの処理方法を説明する.
$.getJSON("http://www.exp99.com/",{param:"USER_GUID"},function(data){  
//ここで返されるdataはすでにjsonオブジェクトです.
  $.each(data.root,function(idx,item){  
    if(idx==0){  
      return true;//continueとfalseとbreak を返します
    }  
    console.log("name:"+item.name+",value:"+item.value);  
  });  
}); 
 
転載元:http://www.exp99.com/f2e/qianduankaifa_77.html