#php #jquery #html
#php #jquery #HTML
Вопрос:
Мне было интересно, как вы, ребята, выполняете перестройку страницы с помощью php и jquery. В моем приложении мне нужно постоянно перестраивать divs. Итак, что я делаю, это
-
отправка ajax-вызова с помощью get, например
person_controller.php?action=rebuild
-
Контроллер выполняет запрос к базе данных, заполняя поля формы.
-
Теперь div создал, например
$div = '<table>
<tr>
<td>
<label id="' . $id . '">' . $id .'</label>
</td>
</tr>
</table>';
return $div; -
При выполнении функции succes вызова ajax я делаю это :
$('#Div').replaceWith(newdiv);
Это работает очень хорошо, но мне было интересно, является ли это хорошим методом восстановления divs без обновления страницы.
Также в firebug вы можете увидеть весь код div в запросе get.
Резюмирую: это хороший способ? Или мне нужно изменить свое поведение при написании кода.
Комментарии:
1. В качестве альтернативы вы могли бы использовать jQuery
$('#Div').load(...)
. Меньше материала для написания, но в основном то же самое. Документы jQuery для .load() — хорошее начало.2. Спасибо за комментарий, но .load быстрее?
3. Нет, это реализовано с
.ajax()
любым из них, вам просто нужно вводить меньше. И меньше кода важно, когда его нужно отправлять по сети. Это также более удобно и читаемо.4. Ах, я понимаю, но я вызываю эту функцию в вызове ajax, поэтому мне все равно, спасибо за совет, братан
5. Я знаю :). Я только что сказал заменить ваш вызов ajax на
load()
. На самом деле вы не просили об этом, вот почему я написал комментарий.
Ответ №1:
Этот метод идеально подходит. С точки зрения разработчика это может иметь недостатки: сложнее просмотреть ajax-ответ в firebug, если это HTML, а не просто данные, и это ограничит повторное использование вашего серверного скрипта, поскольку он будет возвращать только HTML-таблицу, где в другом случае вам могут понадобиться те же данные, но в другом формате.
Альтернативой является возврат только самих данных в виде массива или объекта, а не HTML. Затем вы должны создать HTML на стороне клиента. Обычно люди выполняют запрос к базе данных для строки или массива строк, затем вызывают json_encode
, чтобы перевести его в формат JSON, а затем при успешном обратном вызове их javascript ajax-вызова у них был бы объект javascript или массив, из которого они могли бы извлечь данные ($ id в вашем случае) и сгенерировать HTML.
Если вы решите, что хотите, чтобы ваши вызовы ajax передавали только данные, а не HTML, тогда вы можете захотеть изучить шаблоны javascript. Существуют библиотеки, такие как Mustache, которые позволяют вам определять шаблоны, а затем передавать данные из вашего AJAX-вызова в шаблон и заполнять им заполнители. Это чище, чем объединение строк вместе в Javascript.
Комментарии:
1. Tnx за хороший совет, ваша альтернатива намного лучше, когда вы только передаете данные обратно вместо полностью заполненного div. Но JSON я еще не изучил. Я посмотрю на это в будущем.
Ответ №2:
Это кажется вполне приемлемым решением — если оно не сломано, зачем его исправлять? Вы говорите, что это работает нормально — если у вас не низкая производительность, я бы не советовал повторно разложить ваш код.