2011-08-12 72 views
0

我正在使用JQuery的getJSON()從我的Web服務器請求JSON。然後,我想解析迴應。 JSON響應的格式如下:JQuery getJSON()解析產生「未定義」值

{ 
    "responseStatus": "200", 
    "responseData": { 
     "resultText": "Hello" 
    }, 
    "originalText": "hi" 
} 

我的jQuery代碼:

$.getJSON(url, function (json) { 
    $.each(json, function (i, result) { 
     alert(result.resultText); 
    }); 
}); 

我現在面臨的問題是,我連續收到三種警報窗口:「未定義」,「你好「和」未定義「。我只想找到並顯示resultText的單個值。爲什麼我還收到「未定義」?

謝謝!

回答

2

我認爲你可以這樣做:

$.getJSON(url,function(json){ 

    alert(json.responseData.resultText);  

}); 
+0

這樣做的竅門,謝謝!我是JQuery的新手,所以我仍然試圖學習所有的語法。 – littleK

2

responseData就是爲什麼您使用$.each循環只是嘗試

$.getJSON(url,function(json){ 
    alert(json.responseData.resultText);  
}); 

你獲得三個警告,因爲您是通過全JSON循環只是一個普通的對象對象有3個屬性

$.getJSON(url, function (json) { 
    $.each(json, function (i, result) { 
     //In this loop result will point to each of the properties 
     //of json object and only responseData has resultText property 
     //so you will get proper alert other wise for other properties 
     //it is undefined. 
     alert(result.resultText); 
    }); 
}); 
2

當你這樣通過json對象來實現,你將首先擁有對象「responseStatus」。如果嘗試執行responseStatus.resultText,則它是未定義的,因爲responseStatus沒有該屬性。這同樣適用於「originalText」

爲了看到一個結果只需使用:

$.getJSON(url, function (json) { 
    alert(json.responseData.resultText); 
}); 
2

嘗試這一個(可以直接做)

$.getJSON(url,function(json){ 
     alert(json.responseData.resultText); 
}); 
2

你迭代整個響應...這意味着你打

  1. responseStatus
  2. responseData
  3. originalText

然而,只有responseData酒店有resultText屬性。