2012-02-29 2 views
14

제목별로 JSON에 HTML을 삽입하는 것이 좋습니다. 나는이 목록은 사용자의 입력에서 오는 사용자 정의 드롭 다운을하고 싶은 때문에이 작업을 수행 할 필요가있는 이유이며, JSON은 그래서 다음과 같습니다JSON에 HTML 넣기

{ listTitle: 'Tasks', listHtml: '<ul><li></li>...</ul>' } 

나는 계속 (다음과 같은 foreach 문이 마음이가 내 코드의 버전을 제거하고,

$list = /** Code to grab 'Tasks' list and its title from mysql **/; 
$title = 'Tasks'; 
$listHtml = ''; 
foreach($list as $content) { $listHtml .= '<li>' . htmlspecialchars($content, ENT_QUOTES, 'UTF-8') . '</li>'; } 

exit(json_encode(array(
    'title' => $title, 'listHtml' => '<ul>' . $listHtml . '</ul>' 
))); 

내 걱정은을 깰 수있는 몇 가지 특수 문자가있을 수 있다는 것입니다) 유효성 검사 장소에 있지만,이 질문을 위해 나는 그들을했다 JSON String. 도와주세요.

+0

그것은 단지 문자열입니다. 문자열은 JSON에서 지원됩니다. HTML이있는 사용자도 있습니다.) - http://json.org/ – hakre

+0

@andreas를 참조하십시오. 데이터에서 프레젠테이션을 분리하는 것이 JSON과 같은 형식의 주요 포인트 인 것으로 보입니다. 다른 웹 사이트 또는 사용자가이 데이터를 측면에서 가져 와서 웹 사이트의 외부에서 사용하도록 하시겠습니까? 그렇다면 html로 추가하면이를 망칠 것입니다. 그렇지 않은 경우, json 피드를 사용하는 경우에만 웹 페이지를 작성하는 데 도움이되며, 이는 사용자에게 달려 있습니다. –

+0

@ 밥 어? 내가 언급 한 것처럼 교차 도메인 정책이 적절하다고 생각했습니다. 따라서 스크립트에 콜백 지원을 기꺼이 쓰지 않는 한 괜찮습니다. 제발 계발하십시오 –

답변

18

당신이 먼저 그것을하지 않을 것이며, 마지막으로하지 않을 것입니다.

정말 질문에 답하기 위해 프로토콜/표준을 따르고 있고 (예를 들어 이스케이프하지 않고 문자열의 따옴표를 포함하여)이를 위반하지 않는다고 가정하면 정상이어야합니다. json_encode는이 모든 작업에 훌륭한 역할을하지만, @Kolink는 UTF8로 먼저 인코딩해야합니다. 그렇지 않으면 유니 코드 문자가 때때로 찢어져 빈 출력이 나옵니다.

그 이상으로 프로그래머가 그것을 사용하는 것이 좋습니다. 어떤 사람들은 그것을 피하고 페이지에서 UI 작업을 유지하고, 다른 사람들은 서버에서 UI를 생성하고 JavaScript로 그냥 덤프하게합니다.

+0

감사합니다 brad! 확실히 도움이되고 철저한 대답 : –

+0

[Knockout JS] (http : // knockoutjs.com /)은 사용하기 쉬운 템플릿 시스템을 사용하여 JSON 데이터와 UI 통합을 매우 쉽게 수렴합니다. –

11

아무 문제가 없습니다. 어쨌든 json_encode은 모든 문자를 이스케이프 처리하므로주의해야 할 것은 문자열이 utf8_encode d인지 확인하는 것입니다.

0

물론 JSON에서 값을 배열로 쉽게 전달하고 HTML 렌더링 코드를 클라이언트에 넣을 수는 있습니다. 서버 사이클, 대역폭 바이트 및 로직 - 프레젠테이션 블렌딩을 절약 할 수 있습니다.