JQuery getJSON()解析产生“未定义”值

时间:2011-08-12 16:40:35

标签: javascript jquery json

我正在使用JQuery的getJSON()从我的Web服务器请求JSON。然后,我想解析响应。 JSON响应的格式如下:

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

我的JQuery代码:

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

我面临的问题是我连续收到三个警告窗口:“Undefined”,“Hello”和“Undefined”。我只想获得并显示resultText的单个值。为什么我也收到“未定义”?

谢谢!

5 个答案:

答案 0 :(得分:2)

我认为你可以做到:

$.getJSON(url,function(json){

   alert(json.responseData.resultText);       

});

答案 1 :(得分: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 :(得分:2)

当您遍历json对象时,您将首先拥有对象“responseStatus”。如果您尝试执行responseStatus.resultText,则未定义,因为responseStatus没有该属性。 “originalText”也是如此

为了看到单个结果,只需使用:

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

答案 3 :(得分:2)

尝试这个(你可以直接做)

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

答案 4 :(得分:2)

你正在迭代整个回复...这意味着你正在点击

  1. responseStatus
  2. responseData
  3. originalText
  4. 但是,您的responseData媒体资源具有resultText属性。