

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>Непосредственно в file.php делаете запрос к базе и в завершаете его echo с результатом обработки.
// отправляем данные функцией show_online через интервал времени timeInt
var timeInt=3000;
show_data();
setInterval('show_data()',timeInt);
</script>
Творческая группа "ТАВР".
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>а тут мы получим этот $x. Всё верно?
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>
#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 анонимных