나는 Drupal에 페이스 북 벽과 같은 종류의 홈페이지로 온라인 커뮤니티를 만들었다. 가장 최근의 25 개의 게시물을 볼 수 있으며 그 중 가장 최근의 두 개의 댓글은 해당 게시물 아래에 있습니다. 또한 이러한 주석 바로 아래에 텍스트 영역이있어 특정 게시물에 대한 새 설명을 신속하게 게시 할 수 있습니다.필자의 특별한 경우에 PHP에서 JavaScript로 데이터를 전달하는 가장 좋은 방법
Facebook 스타일의 게시물에는 JavaScript를 통해 많은 기능이 내장되어 있습니다. 게시물 바로 아래에있는 "모든 댓글보기"링크를 클릭하면 해당 게시물에 대한 모든 댓글을 잡고 바로 아래에 표시하는 AJAX 전화가 생성됩니다. 또한 게시물을 유용한 정보로 표시하거나 질문에 대한 해결책으로 주석을 삽입하거나 주석을 편집 할 수 있습니다. 이러한 모든 작업에는 AJAX 요청이 필요합니다. 즉, 요청을 보내는 JavaScript는 노드 ID (고유 한 코멘트 ID (댓글의 고유 식별자) 등
초기 구현에서는 이러한 필수 데이터가 게시물 전체에 뿌려지기 때문에 필요한 JS를 작성하는 것이 더 복잡해졌습니다. 그것. 따라서 두 번째 구현은이 모든 데이터를 각 게시물의 기본 줄 바꿈 요소에있는 JSON 호환 문자열로 출력합니다. 이로 인해 JS가 필요한 데이터를 훨씬 쉽게 찾을 수있게되었지만 JSON을 문자열로 쓰는 것은 고통 스럽습니다 (이스케이프하는 따옴표, 줄 바꿈 없음).
이제 제 3의 아이디어가 있습니다. 구현하기 전에 이에 대한 피드백을 찾고 있습니다. 아이디어는 각 게시물의 데이터를 보유하는 객체를 포함하는 모든 게시물에 대해 단일 글로벌 JS Array를 만드는 것입니다. 해당 배열의 각 요소는 AJAX 호출에 필요한 데이터를 보유합니다. 그래서 다음과 같이 보일 것입니다 :
페이스 북 스타일의 포스트 템플릿
<div class="post" data-postindex="<?php echo $post->index; ?>">
<!-- lots of other HTML for the post -->
</div>
<script type="text/javascript">
globalPostArray.push({
nid: <?php echo $post->nid; ?>,
authorID: <?php $post->authorID; ?>,
//etc. etc. etc.
});
</script>
위의 코드의 결과는 링크가이 AJAX 요청을 필요로 클릭 도착하면, JS 단순히 DOM을 통과 할 것입니다 메인 .post
요소를 찾을 때까지 해당 링크에서 위쪽으로 이동합니다. 그런 다음 의 값을 가져 와서 globalPostArray
의 어떤 요소가 필요한 데이터를 보유하고 있는지 알 수 있습니다.
생각하십니까? 나는 이와 같은 것을 성취 할 수있는 표준적이고 받아 들여진 방법이 있어야하는 것처럼 느껴집니다.
왜 JSON 문자열로 통증이 있습니까? 'json_encode' 함수를 사용하지 않으시겠습니까? –
아니, 나는 그것을 사용하지 않았다. 그리고 그것이 고통이었습니다. 분명히 나는 바보 야. – maxedison