2011-08-02 5 views
5

사용자가 조작하는 (또는 잠재적으로 변경되는) JSON 데이터에서 HTML을 생성하기 위해 jQuery 템플릿 플러그인을 사용하고 있습니다. 이 HTML을 JSON으로 다시 읽는 방법을 찾고 있으므로 내 서버에 다시 저장할 수 있습니다. jQuery는 원래 data JSON을 반환하는 $.tmplItem() 메서드를 제공하지만 현재 DOM에있는 값을 어떻게 얻을 수 있는지 궁금합니다.jQuery HTML to JSON

답변

7

어때?

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

는 JSON으로 다시 변환, 해당 지역의 HTML을 당겨 :

$(':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 내가 simplicty에 대한 JSON.stringify을 사용하지만 프로덕션 환경에서 사용하면 아마도 jquery-json과 같은 라이브러리를 사용해야 할 것입니다. 이전의 브라우저를 지원하지 않는 일부 브라우저는 여전히 주위를 비웃고 있기 때문입니다.

+3

귀하의 대답은 HTML 구조와 일치하는 심층 JSON 중첩을 지원하지 않습니다. 이것은 더 많은 해킹, 에드 후드 솔루션입니다. – vsync

+0

실패 사례와 대체 사례를 제공하려는 경우 꼭 그렇게하십시오. 그러나 HTML의 단순한 문자열 (결국 ASCII 임)이 무엇이든간에 JSON으로 인코딩 될 수없는 명백한 이유가 없다고 생각할 수 있습니다. 그것은 단지 하나의 문자열 일뿐입니다. "구조"가 그것에 의해 표현되는 것은 무의미합니다. 우리는 HTML을 자바 스크립트 객체 구조로 파싱하려고 시도하지 않고, 모든 것을 문자열로 서버에 전달하려고합니다. –

+1

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

0

이 작업을 수행하는 가장 좋은 방법은 jQuery data link plugin 또는 (현재 필요한만큼 많이) 데이터 바인딩 일종입니다. Knockout.