Меню Закрыть

Ajax получение данных из php

Содержание

Поэтому я просто использую эту функцию updateData, чтобы получить значения из моего php-файла, он работает после первого интервала, но я хотел бы получить первые данные после загрузки страницы, поэтому я попытался сделать var

Перед началом интервалов, но набор данных по-прежнему не обновляется немедленно, я получаю пустой массив []

Решение

Я думаю, что ваша проблема заключается в понимании того, что AJAX не синхронизируется!

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

Вы мог вызов AJAX синхронизирован:

Тем не менее, это побеждает цель AJAX. Вы должны узнать, как справляются с функциями обратного вызова.

Другие решения

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

Надеюсь, что это поможет вам.

Добавьте ваш AJAX-вызов в документ готовое время, как это

Получение данных из формы.

Серия статей "Ajax на практике"

  • Основы передачи данных
  • Получение данных из формы
  • Загрузка файлов
  • Progress Bar — индикатор процесса загрузки
  • Запрос на чистом JavaScript

В прошлой статье, мы разобрали основной механизм работы метода jQuery $.ajax(). Теперь не плохо бы рассмотреть случаи из реальной практики: каким способом и откуда можно получать данные для передачи ajax-запросом.

Получение данных из формы.

Есть несколько способов получить данные из полей формы:

  1. Выбирать каждое поле отдельно, получая его значение. Однако, это не очень удобно, когда полей много.
  2. Использовать метод serialize()
  3. Использовать метод serializeArray()

Остановимся на двух последних и не столько на том, как получать данные (тут всё просто), а на том, как их обрабатывать на стороне сервера. Возьмем, к примеру, такую форму:

Читайте также:  Как добавить красивый шрифт в инстаграм

HTML (файл index.html)

И напишем такой JS-код

jQuery (файл script.js)

Теперь напишем обработчик таким образом, чтоб наглядно увидеть разницу между методами serialize() и serializeArray()

PHP-обработчик (файл handler.php)

‘; $req = ob_get_contents(); ob_end_clean(); echo json_encode($req); // вернем полученное в ответе exit; >

Итак, если мы отправим данные с использованием метода serialize(), то после завершения запроса, вместо формы, мы увидит примерно такую картину:

Теперь мы видим в каком виде передаются данные (по сути, строкой) и как выглядят они же, после обработки функцией parse_str(): мы получили ассоциативный массив, где ключами являются имена полей (атрибут name), а значениями — соответствующие данные этих полей.

Проделаем то же самое, но уже с использованием метода serializeArray(), только слегка изменим обработчик. Теперь он должен выглядеть таким образом:

‘; $req = ob_get_contents(); ob_end_clean(); echo json_encode($req); // вернем полученное в ответе exit; >

В этом случае, мы уже увидим на экране следующее:

Разница очевидна. Во втором случае, мы получаем многомерный массив данных, с которым можно сразу работать. Какой из способов выбирать — решать вам. Если говорить обо мне, то в большинстве случаев, я пользуюсь первым.

Получение данных из атрибута data-*.

Итак, это был один из наиболее часто используемых способов получения и передачи данных методом AJAX-запроса. Но рассмотрим другой случай, когда формы нет, но нам нужно откуда-то брать данные для дальнейшей их обработки. К примеру, на странице товара, есть кнопка "Добавить в корзину", по нажатию на которую, мы должны получить какую-то минимальную информацию о продукте. Конечно же, можно сделать скрытые поля формы, где эту информацию и складировать, но есть и другой подход, а именно использование собственных настраиваемых атрибутов. Имя этого атрибута, начинается с префикса data- и должен имеет как минимум один прописной символ после дефиса. Например, data-id, data-mydata, data-ajax и т.д. Вот его-то и возьмем на вооружение, тем более, что в jQuery предусмотрен метод для работы с этим атрибутом — .data().
Сделаем кнопку "Добавить в корзину", содержащюю в атрибуте data-* такие данные, как ID товара, его название и цену. Разделим эти данные запятой (можно использовать другой подходящий разделитель):

Читайте также:  Приложения с которых можно скачивать игры

И напишем следующий JS-код:

Таким не сложным способом, без лишних "телодвижений", мы получили о товаре данные, которые можем использовать дальше: передать AJAX-запросом на сервер, записать в cookie или Local Storage и т.д. Конечно же мы не сбрасываем со счетов и обычные методы для получения данных: текстовое содержание элементов, их другие атрибуты и прочее, но с этим, я надеюсь, что сложностей возникнуть не должно 😉

В следующей части, коснёмся одной из наиболее животрепещущей темы среди новичков: загрузка файлов с помощью AJAX.

Никогда раньше не работал с ajax’ом. Сейчас нужно сделать подгрузку данных черех ajax, и тут же столкнулся с проблемой. Почитав принцип работы ajax сделал следующий код:

Отправил GET’ом значение showall на сервере подхватил его PHP.

После отработки PHP кода я генерирую шаблонную часть и передаю её обратно в блок с классом "foreach". С этим проблем нет.

Теперь вопрос: как мне в ajax ответе получить данные из PHP переменных $a,$b,$c заполненных в ходе работы скрипта. В данном случае нужно вставить содержимое переменной допустим $a в значение value

т.е. мне нужно понять как передается содержимое PHP переменных в JS для дальнейшей работы с содержимым.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.