Я создал онлайн-сообщество в Drupal с домашней страницей, которая похожа на стену Facebook. Вы видите 25 последних сообщений с двумя последними комментариями ниже этих сообщений. Существует также текстовое поле прямо под этими комментариями, чтобы вы могли быстро опубликовать новый комментарий к определенному сообщению.Лучший способ передать данные с PHP на JavaScript для моего конкретного случая
Эти сообщения в стиле Facebook имеют множество функций, встроенных в них через JavaScript. Нажав ссылку «просмотреть все комментарии» непосредственно под сообщением, вы получаете вызов AJAX, который захватывает все комментарии для этого сообщения и отображает их прямо под ним. Вы также можете отметить сообщения как полезные, как решение вашего вопроса, отредактировать встроенные комментарии и т. Д. Все эти действия требуют запросов AJAX, а это значит, что JavaScript, выполняющий запрос, должен знать важную информацию, такую как идентификатор узла (уникальный идентификатор идентификатор сообщения), идентификатор комментария (уникальный идентификатор комментария) и т. д.
В моей первоначальной реализации эти части важных данных посыпались по всем позициям, что усложняло запись JS, которая должна была найти Это. Таким образом, моя вторая реализация просто выводит все эти данные в JSON-совместимую строку в главном элементе упаковки каждого сообщения. Хотя это значительно упростило JS для поиска необходимых данных, запись JSON в виде строки - это боль (ускользание кавычек, отсутствие разрывов строк).
Итак, теперь у меня есть третья идея, и я ищу для нее обратную связь до внедрения. Идея состоит в том, чтобы создать единый глобальный массив JS для всех этих сообщений, который содержит внутри него объекты, которые хранят данные для каждого сообщения. Каждый элемент в этом массиве будет содержать необходимые данные, необходимые для вызовов AJAX. Так это будет выглядеть примерно так:
Facebook стиле пост шаблон
<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
. Затем он захватит значение data-postindex
, чтобы узнать, какой элемент в globalPostArray
содержит данные, которые ему нужны.
Мысли? Я чувствую, что должен быть какой-то стандартный, принятый способ сделать что-то подобное.
Почему JSON как струна - это боль? Вы не используете функцию 'json_encode'? –
Нет, я не использовал его. И именно поэтому это была боль. Ясно, что я идиот :) – maxedison