ajax php возврат данных

Одна функция для Ajax-запросов.

Как вернуть данные.

Что же вообще это значит: «синхронное или асинхронное выполнение»? Если не особо углубляясь и, как говорится, на пальцах, то:

Надеюсь, что суть уловили. 🙂 Давайте разберем типичный ошибочный пример:

И вопрос обычно звучит в таком стиле: «Почему функция не возвращает данные? Почему всегда false?» Теперь уже, когда вы знаете разницу между синхронным и асинхронным выполнением, вы можете без труда понять, что происходит внутри функци «ajaxRequest»: инициализировали переменную «response», начался процесс ajax-запроса, но еще до его завершения, функция уже возвращает значение переменной, которое так и не успело изменится.

Теперь в любом месте, где нужно сделать ajax-запрос, мы прописываем только то, что отправляем и обработчик ответа:

Если же в каком-то исключительном случае, нам нужно изменить определенную настройку, то её так же дописываем. Например, в каком-то случае, нам не нужно показывать «loader» ( ajax php возврат данных) перед отправкой запроса или вместо loader-а, вывести что-то в консоль:

Кому-то может показаться такой подход малополезным, но представим ситуацию, когда вам нужно сделать два, три или более ajax-запросов, дождаться завершения каждого, обработать ответы и только потом вывести на экран. Любители «индусского кода» не растеряются 🙂 Они напишут тонну лишнего кода, в то время, как это можно сделать достаточно легко с помощью того же метода $.when():

Функция Ajax осталась одна, ничего лишнего писать не пришлось и результат тот, которого мы ожидали.
И напоследок, покажу, как можно использовать Promise на чистом JavaScript. Сам код Ajax-запроса я описывать тут не буду, т.к. я его уже разбирал в статье Запрос на чистом JavaScript, а схематически это будет выглядеть так:

Источник

Как вернуть data из функции ajax?

ajax php возврат данных

ajax php возврат данных

ajax php возврат данных

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

event.preventDefault(); и ставите проверочное условие

далее вызываете из своего обработчика передаете переменную в функцию
getData(setter,this)

как только переданная переменная setter стала не пустой а случился очередной клик, то продолжаете обработку клика по кнопке.. как-то так

ajax php возврат данных

Чтобы работать с асинхронным кодом, вы должны разбить свой код на шаги, примерно так:

Для облегчения работы с асинхронным кодом, существует разные техники, например промисы

Для облегчения работы именно с Ajax, существуют хорошие библиотеки вроде Fetch

ajax php возврат данных

ajax php возврат данных

Но ждать 3 (или сколько вы там поставите) секунды скучно и не красиво. Это только для примера, так как нормальные пацаны так не делают. Используйте VUE и вот с ним будет красиво. Он и сам подождет и много чего поможет сделать с data_from_ajax (Ну или setInterval и проверку переменной на пустоту. )

Источник

Как с помощью AJAX jQuery и php сделать отправку данных(комментарии) формы в БД и вернуть их без перезагрузки страницы?

Добрый вечер!Пожалуйста, помогите новичку. Хочу переделать комментарии на своем сайте, нужно, что б добавлялись и выводились без перезагрузки страницы. JS не знаю, из за чего возникли проблемы со скриптом jQuery. Знаю что нужно событие клик, по которому будет выполнена функция с ajax post. Получилось только вот это,

не могу понять как записать отправленные данные в JS script и передать их в php.
Тоже, самое и как полученные с БД данные передать в JS для вывода на сайте.
Помогите решить проблему.
Форма

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

P.S. Как решить часть php понимаю, а вот с JS скриптом и передачей данных между php и js проблема. Помогите, заранее спасибо.

ajax php возврат данных

Вам нужно создать файл php который будет обрабатывать данный запрос. Например ajax-form-comment.php. В нём вы описываите на php всю логику получения данных. Просто берёте всё из массива post. С помощью AJAX вы формируете запрос, файл php получает запрос от ajax, обрабатывает там, в БД добавляет комент и с помощью echo выводит ответ, например текст «Всё круто, записали коммент!» или в формате JSON. В функцию callback success или done (смотря какую вы будите использовать) придут эти данные как раз. И в ней вы опишите логику, например отрисовку данного добавленного комента (вам нужно лишь от сервера получить подтверждение что коммент попал в базу, а данные использовать теже что и отправляли AJAX-ом ранее на сервер). Если нужен код, то могу написать js часть.

В php всё ещё проще, просто массив разбераите, работаите с базой и echo возвращаите данные обратно)

Это в простейшем виде. На самом деле зависит от разметки, требований и реализации на сервере.
UPD: Если с jQuery на Вы, то реализовать самому все это будет трудно.

Источник

jQuery: возврат данных после успешного вызова ajax [дубликат]

этот вопрос уже есть ответ здесь:

у меня есть что-то вроде этого, где это простой вызов скрипта, который возвращает мне значение, строку..

но если я называю что-то вроде это

так как я могу вернуть значение? приведенный ниже код, похоже, тоже не работает.

5 ответов

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

Примечание: этот ответ был написан в феврале 2010 года.
см. обновления от 2015, 2016 и 2017 в нижней части.

вы не можете ничего возвращать из функции, которая является асинхронной. Что вы можете вернуть это обещание. Я объяснил, как обещания работают в jQuery в моих ответах на эти вопросы:

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

вы можете написать свою функцию testAjax следующим образом:

тогда вы можете получить свое обещание так:

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

(упрощенный синтаксис см. В разделе Обновления ниже.)

если ваши данные доступны на данный момент, то эта функция будет вызвана немедленно. Если это не так, то он будет вызван, как только данные имеются.

обновление (2015)

в настоящее время (по состоянию на март 2015 года) обещания jQuery несовместимы с обещания/а+ спецификация что означает, что они не могут очень хорошо сотрудничать с другими обещания / a + соответствующие реализации.

однако jQuery обещает в предстоящей версии 3.x будет совместимо с спецификацией Promises / A+ (спасибо Бенджамин Gruenbaum для указания). В настоящее время (по состоянию на май 2015 года) стабильными версиями jQuery являются 1.x и 2.x.

в частности, весь смысл обработки исключений в синхронном коде заключается не только в отказе от хорошего сообщения, но и в попытке устранить проблему и продолжить выполнение, или, возможно переосмысление того же или другого исключения для некоторых других частей программы для обработки. В синхронном коде у вас есть стек вызовов. В асинхронном вызове вы этого не делаете, и расширенная обработка исключений внутри ваших обещаний, как того требует спецификация Promises/A+, действительно может помочь вам написать код, который будет обрабатывать ошибки и исключения значимым образом даже для сложных случаев использования.

для различий между jQuery и другими реализациями, а также Как конвертировать jQuery обещания к обещаниям/совместимый+, см. из jQuery Крис Коваль и соавт. на вики библиотеки Q и обещания поступают в JavaScript Джейк Арчибальд на HTML5 Rocks.

как вернуть реальное обещание

функция из моего примера выше:

возвращает объект jqXHR, который является jQuery Отложенный Объект.

чтобы использовать ES6 обещания сегодня вы можете использовать es6-модуль обещания polyfill() Джейк Арчибальд.

чтобы увидеть, где вы можно использовать обещания ES6 без заполнения, см.:могу ли я использовать: обещания.

будущее jQuery

интересные переговоры

обновление (2016)

есть новый синтаксис ECMA-262, 6-е издание, раздел 14.2 под названием функции стрелочку это может быть использовано для дальнейшего упрощения приведенных выше примеров.

использование API jQuery вместо:

вы можете написать:

или с помощью Promises / A + API:

не забудьте всегда использовать обработчики отклонения либо с:

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

конечно, в этом примере вы можете использовать только promise.then(alert) потому что ты просто называешь alert С теми же аргументами, что и ваш обратный вызов, но синтаксис стрелки более общий и позволяет писать вещи например:

для поддержки функций стрелки, см.:

обновление (2017)

есть еще более новый синтаксис прямо сейчас называется асинхронные функции с новым await ключевое слово, которое вместо этого кода:

вы можете использовать его только внутри созданной функции с async ключевое слово. Для получения дополнительной информации, см.:

для поддержки в браузерах, см.:

для поддержки в узел, см.:

в местах, где у вас нет родной поддержки async и await вы можете использовать Babel:

или с немного другим синтаксисом подход на основе генератора, как в co или Bluebird coroutines:

Подробнее

некоторые другие вопросы о обещаниях для более подробной информации:

вы можете добавить опцию async в false и возврат вне вызова ajax.

Idk, если вы, ребята, решили это, но я рекомендую другой способ сделать это, и он работает:)

Итак, основная идея здесь заключается в том, что, добавив async: false, вы заставляете все ждать, пока данные не будут получены. Затем вы назначаете его статической переменной класса, и все волшебным образом работает:)

Источник

Определение и применение

jQuery функция $.ajax() позволяет выполнить асинхронный AJAX запрос. AJAX (от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером.

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

jQuery синтаксис:

В самом простом виде функция $.ajax() может быть вызвана без параметров:

Добавлен в версии jQuery

Значения параметров

accepts (по умолчанию: зависит от dataType).

async (по умолчанию: true ).

Тип: Function ( jqXHR jqXHR, String textStatus ).
Функция, которая вызывается, когда запрос заканчивается (функция выполняется после AJAX событий «success» или «error»). В функцию передаются два параметра: jqXHR (в jQuery 1.4.х объект XMLHTTPRequest) и строка соответствующая статусу запроса («success», «notmodified», «nocontent», «error», «timeout», «abort», или «parsererror»). Начиная с версии jQuery 1.5 параметр complete может принимать массив из функций, которые будут вызываться по очереди.

contentType (по умолчанию: «application/x-www-form-urlencoded; charset=UTF-8»).

crossDomain (по умолчанию: false для запросов внутри того же домена, true для кроссдоменных запросов).

dataType (по умолчанию: xml, json, script, или html ).

Основные типы (результат передается в качестве первого аргумента в функцию обратного вызова success):

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *