2011-08-02 58 views
5

我正在使用jQuery模板插件從用戶比操縱(和,可能改變)JSON數據生成HTML。我正在尋找一種方法將這個html讀回JSON,以便我可以將它保存回我的服務器。 jQuery提供了一個返回最初設置的data JSON的$.tmplItem()方法,但我想知道如何獲取當前DOM中的值?jQuery HTML到JSON

回答

7

這個怎麼樣?

http://jsfiddle.net/mWuHe/14/

拉出您所在地區的HTML,然後將其轉換回JSON:

$(':button').click(function() { 
 
    $('#output').text(JSON.stringify({ 
 
     data:$('#input').html() 
 
    })); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="input" contenteditable="true" style="border: 1px solid;width:300px; height:100px;"><b>Edit me!</b> You can use CTRL+B to change bold, ctrl+I to change italics.</div> 
 
<div style="clear:both;"> 
 
    <input type="button" value="Get HTML"> 
 
</div> 
 
<div id="output" style="border: 1px solid;clear:both;width:300px;height:100px;font-family:courier;font-size:10px;"> 
 

 
</div>

BTW我用JSON.stringify爲simplicty,但在生產環境中,應該可能使用像jquery-json這樣的庫,因爲一些不支持的老瀏覽器仍然在偷偷摸摸。

+3

你的答案不支持與HTML結構匹配的深JSON嵌套。這更多的是一種黑客攻擊的解決方案。 – vsync

+0

如果您想提供一個示例失敗案例和替代方案,那麼請盡一切辦法。但是,我可以想象爲什麼一個簡單的HTML字符串(畢竟它只是ASCII)無論如何都不能被JSON編碼。它只是一個字符串,它與它所代表的「結構」無關。我們不是試圖將HTML解析爲JavaScript對象結構,而是試圖將整個事件作爲字符串傳遞給服務器。 –

+1

http://stackoverflow.com/q/7993066/104380 – vsync