0

不知道我做错了什么,但我想从下表中打印的 obj 中获取值。obj包含listOfData并且有一个字段someValue。下面的例子

JSON - {"listOfData":[{"id":"XX","someValue":"James Bond"}]} 

var obj = jQuery.parseJSON(JSON)
$.each(obj.listOfData, function (index, data) {   
   "<tr>" +
       "<td style=\"padding: 3px;\">" +
           index
       "</td>" +
       "<td style=\"padding: 3px;\">" + 
           data.someValue
       "</td>" + 
    "</tr>" +
}

我在 JSP 中得到的输出是[object Object]

4

3 回答 3

3

jQuery.parseJSON函数接受一个字符串,而从您所显示的 JSON 变量已经是一个您可以直接使用的 javascript 对象:

var value = '';
$.each(JSON.listOfData, function (index, data) {   
   value += "<tr>" +
       "<td style=\"padding: 3px;\">" +
           index
       "</td>" +
       "<td style=\"padding: 3px;\">" + 
           data.someValue
       "</td>" + 
    "</tr>";
});
// do something with the value you constructed here

JSON如果您的变量如下所示,则需要进行解析:

var JSON = "{\"listOfData\":[{\"id\":\"XX\",\"someValue\":\"James Bond\"}]}";

我猜 JSON 变量已经是 javascript 对象的原因是因为您将它用作 AJAX 请求的成功回调的参数:

$.ajax({
    url: ...,
    success: function(JSON) {
        ...
    }
});

您不需要解析它的原因是因为您dataType: 'json'$.ajax请求中指定或服务器只是将Content-Type响应标头设置为application/jsonjQuery 能够推断并自动将服务器的响应解析为通过的相应 javascript 对象到成功回调。

于 2013-07-07T09:44:04.567 回答
3

您正在遍历集合并制作 html 但不使用它。

var myHtml = '';

$.each(obj.listOfData, function (index, data) {   
  myHtml += "<tr>" +
       "<td style=\"padding: 3px;\">" +
           index +
       "</td>" + 
       "<td style=\"padding: 3px;\">" + 
           data.someValue
       "</td>" + 
    "</tr>" +
}

$('#tableId').append(myHtml);
于 2013-07-07T09:46:28.560 回答
2

首先,您将一个已经是 JSON 的对象重新解析为 JSON - 直接使用它即可。

其次,您的连接无效,您在那里忘记了一些优点。

第三,你没有对字符串做任何事情。你需要用它做点什么。

JSON = {
    "listOfData": [{
        "id": "XX",
        "someValue": "James Bond"
    }]
};
$(document).ready(function() {
    $.each(JSON.listOfData, function (index, data) {  
      $('body').append(
       "<tr>" +
           "<td style=\"padding: 3px;\">" +
               index +
           "</td>" +
           "<td style=\"padding: 3px;\">" + 
               data.someValue +
           "</td>" + 
        "</tr>");
    });
});

演示

于 2013-07-07T09:52:11.693 回答