Перейти к содержимому


AJAX подгрузка данных.


Сообщений в теме: 44

#21 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 23 Июль 2014 - 11:26

Голова идёт кругом. Вроде всё сделал как Вы написали. Понял что запрос идёт отдельно. Ранее, не знал просто как вывести результат. Оказывается он выводится result =... но всё равно не работает :(

Мне бы реально работающий простой пример... :( что ж я не так то делаю :( почему переменная $x не отображается? :(

#22 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2014 - 11:27

Цитата

Всё верно тут?...

Неверно, в обоих вариантах, т.к. у вас выводится только один $x, а не все нужные строки. Если вам нужно передать массив, используйте JSON, он преобразует массив в строку, или свой вариант (хотя JSON наиболее удобен). Подробнее читайте в инете, там полно примеров по аяксу.

#23 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2014 - 11:29

Да, и к тому же я писал про echo а не про return, откуда вы его взяли вообще? Настоятельно рекомендую почитать побольше про аякс в интернете, т.к. у вас каша в голове. Не надо думать что там все просто так.

#24 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2014 - 11:34

Цитата

почему переменная $x не отображается?

Где именно не отображается? Я же написал, что аякс - это скрытый запрос, каким образом то вы его увидеть то собрались? Еще раз: результат должна обрабатывать функция, которую вы задали в параметрах отправки запроса из JS, а уже она может вывести данные или вставить их в код страницы, или вообще как-то скрыто обработать, без всякого явного вывода.

#25 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 23 Июль 2014 - 11:51

:'(

#26 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 23 Июль 2014 - 12:16

И.. Вновь сначала.

Выполняем запрос к БД:
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'];
  }
  echo $x;
  exit;
}
И дальше запускаем функцию:
<script>
  function show_data() {
    $.ajax({
	  dataType: "html",
	  url: "http://clientbase.local/report.php?id=460&ajax=1",
	  type: "post",
	  success: function(html){
	    $("#div_data").html(" КАК СЮДА ВСТАВИТЬ ДАННЫЕ КОТОРЫЕ ВОЗВРАЩАЕТ ЗАПРОС");
	    }
    });
  }
  var timeInt=3000;
  show_data();
  setInterval('show_data()',timeInt);
</script>

<div id="div_data"></div>

Вопрос!!! Как вернуть данные с запроса????

#27 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2014 - 12:37

$result = mysql_query($sqlQuery);
while ($row = sql_fetch_array($result))
  {
    $x = $row['test'];
  }
  echo $x;
  exit;
}

Уже спрашивал вас: какой смысл прогонять запрос циклом по строкам, если выводите только значение из последней строки (т.к. остальные просто перезаписываются)? Для теста это конечно пойдет (хоть какой-то вывод), но смысл? С тем же успехом можно вывести просто echo "test" для примера.

Цитата

КАК СЮДА ВСТАВИТЬ ДАННЫЕ КОТОРЫЕ ВОЗВРАЩАЕТ ЗАПРОС

Смотрим сюда. В вашем примере соответственно, все данные лежат в переменной html (т.к. именно она указана аргументом в функции, вставленной в sucess). Далее, функция в этом же примере вставляет некий текст в некий элемент на странице с id="div_data". Если вам нужно вставить туда именно ваш результат, соответственно заменяете это текст на переменную html. В реальности, код в этой функции может быть какой угодно (какой сами захотите), не обязательно такой как в примере, это самый простой вариант можно сказать. Например, вначале может потребоваться как-то обработать результат.

#28 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 23 Июль 2014 - 12:44

Ничего не получилось. Unprotected data send! Use csrf. пишет теперь :( голова вспухла и лопнула.

#29 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2014 - 12:48

Смените тип запроса с post на get, post тут даром не нужен.

#30 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 23 Июль 2014 - 12:49

Я Вас люблю!!!!!!!!!!!!!!!!!!!!!! Получилось!!!!!!!!!!!!!!!!

#31 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2014 - 12:50

Цитата

голова вспухла и лопнула

Ну так я вас предупреждал что тут не все так просто. Если вы не профессиональный программист, то вам вообще лучше не лезть в эту область. Программисты то не сразу все понимают.

#32 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Июль 2014 - 12:52

Просмотр сообщенияdolphin (23 Июль 2014 - 12:49) писал:

Получилось!!!!!!!!!!!!!!!!

Рано радуетесь, у вас только одно значение выходит пока. Но надеюсь хоть суть понимать начали.

#33 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 23 Июль 2014 - 12:54

Да, спасибо. Суть потихоньку начал понимать. Кстати, просто поменяв

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))
  {
    $x = $row['test'];
	 echo $x."<br>";
  }

  exit;
}

Теперь у меня как раз выводится 10 последних записей из таблицы.

Еще раз благодарю Вас. Надо побольше проникнуться этой темой!

#34 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 28 Июль 2014 - 10:16

Друзья, а каков алгоритм, если я хочу вновь появившиеся записи показывать другим цветом?

#35 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Июль 2014 - 14:35

Добавьте в функцию обработки результата изменение стиля нужных элементов.

#36 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 30 Июль 2014 - 05:50

Тут не совсем новые получаются, поэтому, то что Вы предлагаете не подойдёт.

Получается что мы по запросу возвращаем 10 крайних записей в БД. Каждый раз. Но, новых из них бывает не больше 3х.

Получается мы как-то должны сравнить запись которая возвращается с запроса и существующую запись. И вывести то что новое... ))) Так?

#37 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 30 Июль 2014 - 09:27

Ну да, естественно. Сверяйте полученные данные с имеющимися и меняйте стиль в соответствии со "свежестью" данных.

#38 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 30 Июль 2014 - 09:40

Тобишь надо работать по строкам, алгоритм такой?

0. Объявили q=0.
1. Дали запрос, открыли цикл с 10 шагами.
2. Получили новый ответ и сравнили каждую строку ответа с первой текущей строкой.
3. Присвоили q=++.
4. Если найдено совпадение - то вышли из цикла.

5. Удалили в новом ответе 10-q нижних строк и присвоили стиль
6. Удалили в текущем ответе первые q строк
7. Сложили ответы
8. Вывели.

#39 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 687 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 30 Июль 2014 - 10:23

Алгоритм зависит от того в каком виде вы получаете данные и что вам с ними нужно делать, я же не знаю деталей вашей реализации, это вы уж сами разбирайте. Общий принцип я изложил.

Как альтернатива кстати, можно в запросе на аякс задавать маркер, по которому отбирать не 10 последних записей, а только свежие. Тогда и сверять ничего не надо. И это больше соответствует идеологии аякса, по которому мы запрашиваем только те данные, которые нам нужны и которые необходимы для обновления, не меняя при этом то что остается неизменным.

#40 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 30 Июль 2014 - 18:39

Опа. Интересно про маркер. А поподробнее? На примере вывода крайних 10 записей из КБ?





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных