65 / 65 / 47
Регистрация: 04.12.2016
Сообщений: 214
|
|||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||
AJAX - как сделать запрос к PHP-коду без перезагрузки страницы21.12.2016, 01:36. Показов 43677. Ответов 27
Эта тема имеет больше общего с JavaScript, но ввиду того, как часто у новичков возникают вопросы вроде "Как выполнить функцию PHP из JavaScript-кода?" или "Как отправить форму без перезагрузки?", она напросилась в этом разделе сама самой.
Итак, AJAX - это Asynchronous Javascript And XML - асинхронный JavaScript и XML, если по-русски. Разберём каждое слово: 1) Асинхронный - это и есть то самое, чего все так хотят - выполнение действий без перезагрузки страницы. Пока JavaScript отправил запрос на сервер, пользователь продолжает выполнять действия на странице, т.к. никаких переходов при отправке запроса не происходит. 2) JavaScript - язык программирования, который используют инструменты для отправки AJAX-запросов. Т.к. статья для новичков, то подразумевается, что вы используете либо только чистый JavaScript, либо в совокупности с jQuery. Если вы не используете jQuery, то для создания такого запроса требуется создание объекта XMLHttpRequest. В jQuery всё немного проще и лаконичнее - вы пользуетесь методами $.post и $.get для отправки соответствующих запросов. Когда нужно использовать post, а когда get - чуть позже. 3) XML - в контексте этой статьи это не так важно, считайте это отсылкой к тому самому объекту XMLHttpRequest, ведь сначала появился именно этот способ. Таким образом, AJAX - это способ отправки запросов (и данных) на сервер без перезагрузки страницы и, как следует, прерывания действий пользователя. О методах GET и POST. Обычно, любой запрос сопровождается некоторыми параметрами. В GET-запросах такие параметры передаются в URL, например: http://site.com/index.php?param1=value1¶m2=value2 . Это накладывает два ограничения:1) Объём отправляемых данных существенно ограничен - объём классического GET-запроса находится в диапазоне от 2 до 8 килобайт по умолчанию. 2) Данные открыты - не желательно передавать чувствительные данные, например - пароли. Из-за этого, POST-запросы встречаются намного чаще. У POST-запроса, в отличие от GET, есть тело, которое помещается после заголовка (а GET-запрос имеет только его). Данные тела явно не передаются (относительно - трафик можно прослушать, но это уже вопрос применения шифрования и защищенного канала). Объём информации, который можно передать в теле, опять же, зависит от настроек сервера. По умолчанию, этот объём порядка 20 мегабайт. И, разумеется, можно передавать GET-параметры через URL. В общем случае, POST-запросы являются более гибкими. Теперь рассмотрим отправку этих двух видов запросов с помощью обозначенных выше методов - с помощью объекта XMLHttpRequest и методов jQuery - $.post и $.get. GET-запрос В качестве примера используем следующий "скрипт": hello.php
будет получен ответ на запрос. Такая функция называется callback (колбэк). В ней мы обрабатываем два случая - когда запрос прошел нормально, и когда произошла ошибка. В 10-той строке мы вызываем метод, в который передаём три параметра: 1) "GET" - тип запроса 2) "hello.php?name=Webkill" - URL запроса: файл hello.php и один параметр name. 3) true - асинхронность. Если false - то браузер будет ожидать ответа (синхронность). На 11-ой строке происходит отправка запроса, при этом мы указываем один параметр - null (позже, через этот параметр будут передаваться данные тела POST-запроса). 2) jQuery
1) "hello.php" - часть URL без GET-параметров 2) {name: "Webkill"} - параметры запроса в виде ассоциативного массива (JSON)3) Функция-обработчик, которая вызывается в случае "успеха" POST-запрос Допустим, нужно сделать аутентификацию без перезагрузки страницы. GET-запрос не подходит, т.к. передаётся пароль. login.php
2) jQuery
Снова, изменений немного: только название метода говорит о том, что в этот раз мы шлём POST-запрос. В случае GET-запроса параметры, которые мы передаём в JSON, закодируются в URL, а в случае POST - попадут в тело запроса. Если вы хотите использовать GET-параметры в POST-запросе, то необходимо их писать в URL вручную. Естественно, круг задач, для которых используется AJAX намного шире - загрузка файлов, игры и т.д. Целью этой статьи является ознакомление с этим комплексом технологий. Стоит отметить, что в случае jQuery можно обрабатывать намного больше вариантов ответа сервера с помощью функций done, fail и always. Также, функции-обработчики кроме собственно ответа принимают и другие параметры. Для дальнейшего изучения: jQuery $.post jQuery $.get Русский сайт о XMLHttpRequest
10
|
21.12.2016, 01:36 | |
Ответы с готовыми решениями:
27
Как сделать мультизагрузку фото с ajax и php без перезагрузки страницы? Как организовать ajax-запрос без перезагрузки страницы?! Как сделать запрос по Ajax при нажатии на submit без перезагрузки AJAX. Как сделать так, чтобы данные обновлялись в таблице без перезагрузки страницы? |
26.12.2016, 20:00 | 3 |
По существу: Исполнение PHP-скрипта без перезагрузки страницы и без знания JavaScript(!) - Xajax - решил запостить отдельной темой, бо Xajax - это особая большая тема (ожидаю много вопросов там). Ко всему прочему, это как раз и есть практически чистое PHP. Т.е. JavaScript там разумеется есть, но он упакован внутрь PHP-обертки настолько плотно, что кодеру при написании Ajax-скрипта нужно написать не более 1-2 простейших строчек на JavaScript.
2
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
|
||||||
30.12.2016, 13:11 | 4 | |||||
забыли описать, как из формы передать данные
0
|
0 / 0 / 1
Регистрация: 29.12.2016
Сообщений: 157
|
|||||||||||
09.01.2017, 13:13 | 5 | ||||||||||
Что-то у меня не получаается.. страница все равно перезагружается..
Делаю так: index.php
Может я конечно что то не так делаю, подскажите, пожалуйста!!
0
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
|
|||||||||||
09.01.2017, 13:53 | 6 | ||||||||||
а что это, собственно, за лажа?
и XMLHttpRequest() уже не нужна, когда юзается jQuery (не забываем подключать) изучаем: http://ruseller.com/lessons.php?rub=32&id=1452
для отладки в скрипте ловите: var_dump($_POST);exit;
0
|
0 / 0 / 1
Регистрация: 29.12.2016
Сообщений: 157
|
||||||
09.01.2017, 15:14 | 7 | |||||
Сделала так:
index.php
array(2) { ["login"]=> string(5) "blala" ["password"]=> string(9) "blablabla" } Как сделать без перезагрузки?? И вот эта ссылка не работает
0
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
|
|
09.01.2017, 16:25 | 8 |
<form id="form_id" method="post" onsubmit='return false;'>
ну или заменить type="submit" на type="button" (хотя правильнее использовать просто <button ...>) печальненько ( видимо, ничто не вечно
0
|
0 / 0 / 1
Регистрация: 29.12.2016
Сообщений: 157
|
||||||
09.01.2017, 16:38 | 9 | |||||
Вот так вот надо??
index.php
0
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
|
||||||
09.01.2017, 16:48 | 10 | |||||
0
|
0 / 0 / 1
Регистрация: 29.12.2016
Сообщений: 157
|
|
09.01.2017, 17:14 | 11 |
Сделала как ты сказал.., ни чего не происходит
А как сделать что бы он вернут мне то что пользователь напишет в login и password ??
0
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
|
||||||
09.01.2017, 18:01 | 12 | |||||
сказал же jQuery подключить
3
|
3 / 3 / 1
Регистрация: 24.03.2013
Сообщений: 304
|
|
10.01.2017, 16:31 | 13 |
Это вопрос или статья?
0
|
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
|||||||||||
10.01.2017, 18:45 | 14 | ||||||||||
1
|
6 / 6 / 5
Регистрация: 15.01.2016
Сообщений: 220
|
||||||
11.01.2017, 13:36 | 15 | |||||
Спасибо за статью. Но я не нашёл ответа на свой вопрос. У меня 1 функция в php файле. Он находится в той же папке, что и html файл с кнопкой, при нажатии на которую должна вызываться эта 1 функция.
0
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
||||||
12.01.2017, 14:14 | 16 | |||||
And82, запрос должен ити на url, как-то так:
404 ошибка означает, что искомый ресурс не найдет, что в вашем случае совершенно очевидно.
0
|
30.01.2017, 16:45 | 17 |
Еще немного Аякса для начинающих:
Пример простейшего калькулятора на PHP без перезагрузки страницы (чистый Ajax, без jQuery и других библиотек)
0
|
126 / 2 / 1
Регистрация: 24.07.2015
Сообщений: 17
|
|||||||||||
17.02.2017, 20:22 | 18 | ||||||||||
Здравствуйте, уважаемые.
Подскажите пож-та, - по вашему примеру выше, сделал свою форму - все ОК! А как сделать, чтобы ответ (который: <div id="result"></div>) выводился во всплывающем окне, но не просто как уведомление, а как html,-чтобы ему можно было стили задать: Файл ajax.php с формой:
Спасибо заранее.
0
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,211
|
|
17.02.2017, 21:03 | 19 |
прописать стили всплывающего окна (position:absolute;display:none;margin:0 auto) и грузить в него html, а потом через JQ дать ему $('#result').show();
1
|
126 / 2 / 1
Регистрация: 24.07.2015
Сообщений: 17
|
|
17.02.2017, 22:14 | 20 |
Спасибо за помощь!
Сделал так: <div id="result" style="position:absolute;display:none;margin:0 auto;"></div> и после "$('#result').html(res);//выводим ответ с сервера в контейнер с id='result'" добавил $('#result').show(); Что-то ничего не поменялось.. Что не так? Добавлено через 53 минуты нету всплывающего окна..(( Понимаю, что должно быть просто, но рыская дальше по форуму и интернету ничего не могу человеческого найти, а то, что нахожу - больше похоже на костыли..(
0
|
17.02.2017, 22:14 | |
17.02.2017, 22:14 | |
Помогаю со студенческими работами здесь
20
Пример простейшего калькулятора на PHP без перезагрузки страницы (чистый Ajax, без jQuery и других библиотек) Загрузка контента без перезагрузки страницы Php Mysql AJAX Ajax запрос и ответ на него - все это без перезагрузки страницы Как заставить этот код работать без перезагрузки страницы (ajax) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |