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/json、jQuery がサーバーへの応答を推測して、渡された対応する 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 に再解析しています - それを直接使用してください。

次に、連結が無効です。いくつかのプラスを忘れました。

3 番目に、文字列に対して何もしていません。あなたはそれで何かをする必要があります。

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 に答える