AJAX или как построить вывод материалов?

12
Segey
На сайте с 23.08.2005
Offline
404
1172

Проблема буквально в следующем:

1. Есть БД машин

2. Есть форма фильтра, где по onChange отправляется AJAX запрос на сервер к php скрипту

3. Скрипт php может выдать ответ и потом ответ нужно аккуратно вывести на странице

Проблема сейчас такая, уже есть php код который выводит все это дело на странице, а фильтр работал без AJAX. Вот я теперь сижу и думаю, что мне генерировать в этом скрипте, который выдаст ответ AJAX запросу - то ли xml, то ли JSON этот непонятный, то ли просто ничего не делать и пусть как выдавал html так и выдает и вставлять его на страницу целиком... :confused:

Неохота за зря переписывать все, вот хочу заранее спросить, как вы делали в подобных случаях?

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
bigton
На сайте с 17.08.2009
Offline
43
#1

Везде использую json.

На мой взгляд там все предельно просто, какие у вас с ним непонятки?

Segey
На сайте с 23.08.2005
Offline
404
#2

bigton,

100% я бы сказал, никогда не видел как, что и зачем и тем более не пробовал, а вот тут нужно стало...

p.s. А с html вариант чем не вариант? Правда пока все локально и на моем ПК, как оно везде будет еще не проверял....

V
На сайте с 05.01.2011
Offline
23
#3

а что мешает просто html отдавть ?

Segey
На сайте с 23.08.2005
Offline
404
#4
veterinar:
а что мешает просто html отдавть ?

Да вот я ж про что и спрашиваю, это чем то плохо? А то кругом xml/JSON, как будто просто html генерировать преступление....

bigton
На сайте с 17.08.2009
Offline
43
#5

На скорую руку

ajax_search.php

<?php


$item_list = array();

$item_list[] = array('name' => 'Audi A6', 'foto' => '/audi6.png', 'price' => '1000000');
$item_list[] = array('name' => 'Audi A5', 'foto' => '/audi5.png', 'price' => '1000000');

echo json_encode($item_list);

?>

<form method="post" name="search">

<input type="text" name="name" /> <input type="submit" name="go" value="Найти" />
</form>

<table id="list">
<tr>
<th>Name</th>
<th>Foto</th>
<th>Price</th>
</tr>
</table>

<script type="text/javascript" src="http://yandex.st/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$('form[name="search"]').submit(function(){

$.post('/ajax_search.php', $(this).serialize(), function(data){

$.each(data, function(k, v){

$("#list tr:last").append('<tr><td>' + v['name'] + '</td><td>' + v['foto'] + '</td><td>' + v['price'] + '</td></tr>');

});

}, 'json');

return false;
});
</script>

Я бы не стал говорить что получать готовый html плохо. Просто я имел дело с крупными проектами где приходиться оптимизировать все! Используя json вы передаете только конкретные данные, используя html - кучу "мусора" в виде тегов. Опять же, если проект большой разница в трафике и потребляемых ресурсах будет значительной.

Segey
На сайте с 23.08.2005
Offline
404
#6
bigton:
Я бы не стал говорить что получать готовый html плохо. Просто я имел дело с крупными проектами где приходиться оптимизировать все! Используя json вы передаете только конкретные данные, используя html - кучу "мусора" в виде тегов. Опять же, если проект большой разница в трафике и потребляемых ресурсах будет значительной.

Да он большой, но сила ничего не делать когда и так все есть может быть сильнее меня... А есть кроме трафика подводные камни?

bigton
На сайте с 17.08.2009
Offline
43
#7

Да в принципе нет... Это просто как объектное и процедурное программирование, на простеньком сайте ооп может все усложнить, а на сложном без него придется тяжело.

kil
На сайте с 03.04.2006
Offline
84
kil
#8

ИМХО используйте как вам проще будет. В любом случае всегда можно переписать, когда время придет.

Я лично не очень люблю подобные конструкции

.append('<tr><td>' + v['name'] + '</td><td>' + v['foto'] + '</td><td>' + v['price'] + '</td></tr>'
т.к. геморойно потом отлавливать и править. Хотя их использование вполне оправдано в некоторых случаях.
Segey
На сайте с 23.08.2005
Offline
404
#9
kil:
т.к. геморойно потом отлавливать и править. Хотя их использование вполне оправдано в некоторых случаях.

А в каких, например, можете сказать? Для меня сейчас это и правда все усложнит, да и вот "когда придет то время" тоже не понятно...

kil
На сайте с 03.04.2006
Offline
84
kil
#10
Segey:
А в каких, например, можете сказать? Для меня сейчас это и правда все усложнит, да и вот "когда придет то время" тоже не понятно...

Если сейчас не видите причину так делать, значит вам это сейчас и не надо.

Если "дешевле" сформировать на сервере подобную конструкцию с помощью шаблона, то проблем не вижу. Если же есть соблазн перенести часть вычислений на клиента, то подобный способ подходит.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий