Восстановление / обновление divs с помощью PHP и jQuery

#php #jquery #html

#php #jquery #HTML

Вопрос:

Мне было интересно, как вы, ребята, выполняете перестройку страницы с помощью php и jquery. В моем приложении мне нужно постоянно перестраивать divs. Итак, что я делаю, это

  1. отправка ajax-вызова с помощью get, например person_controller.php?action=rebuild

  2. Контроллер выполняет запрос к базе данных, заполняя поля формы.

  3. Теперь div создал, например

    $div = '<table>
    <tr>
    <td>
    <label id="' . $id . '">' . $id .'</label>
    </td>
    </tr>
    </table>';
    return $div;

  4. При выполнении функции 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:

Это кажется вполне приемлемым решением — если оно не сломано, зачем его исправлять? Вы говорите, что это работает нормально — если у вас не низкая производительность, я бы не советовал повторно разложить ваш код.