

AJAX подгрузка данных.
#1
Отправлено 22 Июль 2014 - 20:00
Подскажите пожалуйста простой пример, когда данные с КБ, допустим, с какой то таблицы, будут обновляться в представлении без перезагрузки страницы? Как такое сделать? Самый наипростейший пример?..
Заранее благодарю!!!
#2
Отправлено 23 Июль 2014 - 09:32
function AjaxViborka(){ $.ajax({ url: "path/to/ajax/file.php", type: "POST", data: { Name : 'Имя, которое проверить надо' }, }).done(function(otvet_php) { if (otvet_php == 1) { location.reload(); } }); }То какой адрес отображать тут:
url: "path/to/ajax/file.php",
#3
Отправлено 23 Июль 2014 - 09:46
$sqlQuery = "SELECT f2640 as test FROM ".DATA_TABLE."210 ORDER BY add_time DESC LIMIT 10"; $result = mysql_query($sqlQuery); while ($row = sql_fetch_array($result)) { $data['test'] = $row['test']; $lines[] = $data; } $smarty->assign("lines", $lines);Простейшее отображение этих данных (в отображении):
{foreach from=$lines item=data} {$data.test}<br> {/foreach}
Вопрос в следующем. Как теперь эти данные получать асинхронно(без перезагрузки страницы), через каждые 3 секунды?..
#4
Отправлено 23 Июль 2014 - 10:15
function show_data() { $.ajax({ dataType: "html", url: "path/to/ajax/file.php", type: "POST", data: { Name : 'Имя, которое проверить надо' }, success: function(html){ $("#div_data").html("........ваш вывод информации ......."); } }); }А в представление вставьте сам скрипт
<script> // отправляем данные функцией show_online через интервал времени timeInt var timeInt=3000; show_data(); setInterval('show_data()',timeInt); </script>Непосредственно в file.php делаете запрос к базе и в завершаете его echo с результатом обработки.
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#5
Отправлено 23 Июль 2014 - 10:16
#6
Отправлено 23 Июль 2014 - 10:18
dolphin (23 Июль 2014 - 10:16) писал:
url: "path/to/ajax/file.php",
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#7
Отправлено 23 Июль 2014 - 10:22
function AjaxViborka(){ $.ajax({ url: "path/to/ajax/file.php", type: "POST", data: { Name : 'Имя, которое проверить надо' }, }).done(function(otvet_php) { if (otvet_php == 1) { location.reload(); } }); }
Это взято с интернета с желанием разобрать что к чему.
Давайте начнем сначала.
Задача: в представлении без перезагрузки страницы отображать 10 крайних записей с какой нибудь таблицы (обновляя их каждые 3 секунды).
#8
Отправлено 23 Июль 2014 - 10:36
dolphin (23 Июль 2014 - 10:22) писал:
Задача: в представлении без перезагрузки страницы отображать 10 крайних записей с какой нибудь таблицы (обновляя их каждые 3 секунды).
datatype - вид возвращаемых данных. В данном случае html.
url - это строка расположения php-файла на стороне сервера, в котором происходит выборка данных из БД и передача их на сторону клиента, т.е. на Ваш компьютер в браузер.
success - если запрос прошел успешно, выполняется функция из этой строки. Здесь вы можете обработать полученный от php-файла ответ и вывести его в удобном для Вас месте и виде.
type - вид запроса через get или post.
JS код, который прописан ниже. запускает функцию каждые три секунды.
<script> function show_data() { $.ajax({ dataType: "html", url: "path/to/ajax/file.php", type: "POST", success: function(html){ $("#div_data").html("........ваш вывод информации ......."); } }); } // отправляем данные функцией show_online через интервал времени timeInt var timeInt=3000; show_data(); setInterval('show_data()',timeInt); </script>
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#9
Отправлено 23 Июль 2014 - 10:39
andibrag (23 Июль 2014 - 10:36) писал:
#10
Отправлено 23 Июль 2014 - 10:55
dolphin (23 Июль 2014 - 10:39) писал:
Почему нет? Вместо пути к file.php задаете путь к вашему представлению, с каким-нибудь доп.параметром, например "ajax=1". Соответственно, в обработке данных добавляете код под условие if ($_REQUEST['ajax']) {// тут код обработки аякс запроса}
#11
Отправлено 23 Июль 2014 - 10:57
#12
Отправлено 23 Июль 2014 - 11:02
if ($_REQUEST['ajax'] == 1) { $sqlQuery = "SELECT f2640 as test FROM ".DATA_TABLE."210 ORDER BY add_time DESC LIMIT 10"; $result = mysql_query($sqlQuery); while ($row = sql_fetch_array($result)) { $data['test'] = $row['test']; } }
В отображении:
<script> function show_data() { $.ajax({ dataType: "html", url: "edit_php.php?report=460&ajax=1", type: "POST", success: function(html){ $("#div_data").html("$data['test']"); } }); } // отправляем данные функцией show_online через интервал времени timeInt var timeInt=3000; show_data(); setInterval('show_data()',timeInt); </script> <div id="div_data"></div>
Результат:
$data['test']
P. S. Что не так?

#13
Отправлено 23 Июль 2014 - 11:06
Абстрагируйтесь от того что у вас скрипт запроса сейчас включен в "обработку данных" представления, по сути этот тот же file.php из примера, никак не связанный с остальным кодом.
#14
Отправлено 23 Июль 2014 - 11:07


#15
Отправлено 23 Июль 2014 - 11:11
Еще раз (может не прочли, дописывал):
Цитата
Фрагмент с обработкой запроса никак не связан с выводом в отчет, это абсолютно отдельный поток данных!
По этой причине кстати и exit должен быть в его конце, чтобы выполнение дальше не пошло, иначе у вас весь отчет вылезет в ajax ответ.
#16
Отправлено 23 Июль 2014 - 11:14




#17
Отправлено 23 Июль 2014 - 11:17
Подготовим данные:
if ($_REQUEST['ajax'] == 1) { $sqlQuery = "SELECT f2640 as test FROM ".DATA_TABLE."210 ORDER BY add_time DESC LIMIT 1"; $result = mysql_query($sqlQuery); while ($row = sql_fetch_array($result)) { $x = $row['test']; return $x; } }Всё верно тут?...
#18
Отправлено 23 Июль 2014 - 11:18
<script> function show_data() { $.ajax({ dataType: "html", url: "report.php?report=460&ajax=1", type: "POST", success: function(html){ $("#div_data").html("$x"); } }); } var timeInt=3000; show_data(); setInterval('show_data()',timeInt); </script> <div id="div_data"></div>а тут мы получим этот $x. Всё верно?
#19
Отправлено 23 Июль 2014 - 11:21
if ($_REQUEST['ajax'] == 1) { $sqlQuery = "SELECT f2640 as test FROM ".DATA_TABLE."210 ORDER BY add_time DESC LIMIT 1"; $result = mysql_query($sqlQuery); while ($row = sql_fetch_array($result)) { $x = $row['test']; } return $x; exit; }
#20
Отправлено 23 Июль 2014 - 11:23
1. То что вы выводите в отчет из подготовки данных и отображения - это привычная всем html страница целиком со всеми заголовками, она непосредственно отображается в браузере, когда вы вводите адрес отчета, либо переходите к нему по ссылке, либо выполняете какие-то действия по отправке формы (например, поменяли период или менеджера в шапке отчета).
2. То что вы запрашиваете через аякс, к стандартному выводу в браузер никакого отношения не имеет!! Это отдельный, скрытый запрос к серверу из js-скрипта, ВНЕ браузера, с целью получить какие-то данные, грубо говоря в виде строки простого текста. Потом, этот текст должна обработать функция, которую вы задали в запросе из js. Никаких передач в smarty и отображение там не надо.
Так понятнее стало?
Поэтому собственно и обрабатывать запрос должен абсолютно отдельный скрипт, или его эмуляция в подготовке данных, но со СВОИМ выводом и exit'ом в конце, т.е как совершенно независимый кусок кода.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных