2016-03-14 55 views
-3

我正在提取數據,然後將其序列化到服務器端的JSON字符串,然後將其傳遞到客戶端。 假設我在客戶端得到的數據是JSON字符串,我如何通過JSON迭代在客戶端創建HTML表?JSON轉換

+1

有你到目前爲止已經試過什麼碼? – Starscream1984

+0

有很多教程可以做到這一點。問題與目前相比過於廣泛。如果您有特定的代碼問題,請顯示該代碼並更新問題並提供正確的問題描述 – charlietfl

+0

我試過使用json.parse,但它給出了語法錯誤 – vastav

回答

1

(編輯。假設你的表有一個id =「myTable的」您可以附加您的項目[ID,農佈雷]作爲迭代方框中描述)

您還沒有指定如何接收數據,但假設您在jquery ajax請求後收到的。這可能是如何迭代JSON的一個例子。

首先,jQuery.parseJSON(response.responseText)

JavaScript的塊在客戶端側執行的解析它:

$.ajax({ 
    type: 'POST', 
    url: $("#YourFormID").attr('action'), 
    dataType: 'json', 
    data: $("#YourFormID").serialize(), 
    beforeSend: function(objeto) { 
    }, 
    complete: function(response) { 
    }, 
    success: function(response) { 
    // Parse the JSON received 
    jSONResp = jQuery.parseJSON(response.responseText);  
    // If your expected list is called 'myList' 
    if ('myList' in jSONResp) { 

     // If your <table> does not exists, you can create it at this time, within an existing element (someContainer): 
     $("#someContainer").append('<table id="myTable"><tr><td>ID</td><td><td>Name</td></tr></table>'); 

     for (var i=0; i<jSONResp.myList.length; i++) { 
      var item = jSONResp.myList[i]; 
      // Append a new <tr> with the current item data to the table 
      $('#myTable').append('<tr><td>'+item["Id"]+'</td><td>'+item["Name"]+'</td></tr>'); 
     } 
    } 
    }, 
    error: function(objeto, quepaso, otroobj){ 
    alert("ERROR: "+quepaso); 
    } 
}); 

和響應。從服務器端的posible php腳本。

<?PHP 
$data = /** whatever you're serializing, array of items etc **/; 
header('Content-Type: application/json'); 
echo json_encode($data); 

(對不起,我不能添加評論,只回應)

+0

'data:$(「#YourFormID」)。serialize(),' - 如果沒有正確設置內容類型請求頭,請不要這樣做。 – Quentin

+0

'jSONResp = jQuery.parseJSON(response.responseText); ' - 那不行。 'response'可以是響應的文本,也可以是通過解析響應而創建的JS數據結構,就好像它是JSON一樣(取決於內容類型響應頭是什麼類型的數據)。 – Quentin

+0

對,(已編輯)我已經添加了更多,包括可能的服務器響應和內容類型。我在我們的一些項目中編寫了這些腳本,並且他們工作。 – MikeBau