2012-01-03 7 views
1

PHPサーバーからブラウザにJSONをエコーし​​ています。私は静かなXMLに堪能ですが、JSONの初心者です。誰かがxmlhttpRequestからJSONを正しく抽出し、それをアラートというデータに渡す方法を教えてもらえますか?JSでJSONをxmlhttpRequestリクエストで受け渡しする

私のJSON(PHPサーバーから)

 {"data": { 
     "message": "Open the Pod bay doors, Hal", 
     "type": "request",   
     "replies" => array(
       "id": "12321" 
       "message": "I'm sorry Dave, I'm afraid I can't do that!" 
     ) 
     } 
     } 

JSでの私の要求は私のAjaxの機能がある...しかし、私はそれをキャッチまたは内部情報を抽出する方法はありませんJSONを返す...

function ajax(site){ 
    xmlhttp.open("GET","site",true); 
    xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4) { 
     if (xmlhttp.status!=404) { 
     var resp =new Function("return "+xmlhttp.responseText)(); 

    } 
    } 
xmlhttp.send(null); 
} 

それから私はwindow.onloadで

window.onload = runJSON() 

function runJSON(){ 
    var site = "http://localhost/sites/sandbox/json.php" 
    ajax(site); 
    ... this is what i am unsure about... how do I access the data in the object 
} 
alert(data); 
} 

答えて

1
"replies" => array(
      "id": "12321" 
      "message": "I'm sorry Dave, I'm afraid I can't do that!" 
    ) 
を機能を呼び出しています

JavaScriptで

"replies": { 
    "id": "12321", 
    "message": "I'm sorry Dave, I'm afraid I can't do that!" 
} 

する必要があり、あなたがonreadystatechangeハンドラ内からのコールバックからあなたstrを取得する必要があります​​を、実行することにより、JSオブジェクトにJSONに変換することができます:

if (xmlhttp.status!=404) { 
    var resp =new Function("return "+xmlhttp.responseText)(); 
    ajaxDone(resp); 
} 
function ajaxDone(str) { 
    try { 
    var data = JSON.parse(str); 
    console.log(data); 
    } catch (x) { 
    // TODO: see what happened 
    } 
} 

注:古いブラウザではJSON.parseは存在しません。それらもサポートしたい場合は、jQueryのようなシムを挿入するライブラリが必要になります(これはまた、AJAX部門の多くの痛みを取り除きます)。

1

まず、JSONデータを解析して、それをajax関数から戻す必要があります。

return JSON.parse(xmlhttp.responseText); 

、この行が続いてrunJSON機能では、変数にそのJSONオブジェクトを取る

var resp =new Function("return "+xmlhttp.responseText)(); 

変更。

var jd = ajax(site); 

次に、jsonのすべてのデータにアクセスできます。

例えば、 alert(jd.data.message);は、「Pod bay doors Halを開く」というメッセージを画面に表示します。

関連する問題