|
65 / 65 / 47
Регистрация: 04.12.2016
Сообщений: 214
|
|||||||||||||||||||||||||||||||
AJAX - как сделать запрос к PHP-коду без перезагрузки страницы21.12.2016, 01:36. Показов 50584. Ответов 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 без перезагрузки |
|
|
|
| 26.12.2016, 20:00 | |
|
По существу: Исполнение PHP-скрипта без перезагрузки страницы и без знания JavaScript(!) - Xajax - решил запостить отдельной темой, бо Xajax - это особая большая тема (ожидаю много вопросов там). Ко всему прочему, это как раз и есть практически чистое PHP. Т.е. JavaScript там разумеется есть, но он упакован внутрь PHP-обертки настолько плотно, что кодеру при написании Ajax-скрипта нужно написать не более 1-2 простейших строчек на JavaScript.
2
|
|
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,229
|
||||||
| 30.12.2016, 13:11 | ||||||
|
забыли описать, как из формы передать данные
0
|
||||||
|
0 / 0 / 1
Регистрация: 29.12.2016
Сообщений: 157
|
|||||||||||
| 09.01.2017, 13:13 | |||||||||||
|
Что-то у меня не получаается.. страница все равно перезагружается..
Делаю так: index.php
Может я конечно что то не так делаю, подскажите, пожалуйста!!
0
|
|||||||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,229
|
||||||||||||
| 09.01.2017, 13:53 | ||||||||||||
|
а что это, собственно, за лажа?
изучаем: 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 | |||||||
|
Сделала так:
index.php
array(2) { ["login"]=> string(5) "blala" ["password"]=> string(9) "blablabla" } Как сделать без перезагрузки?? И вот эта ссылка не работает
0
|
|||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,229
|
|||
| 09.01.2017, 16:25 | |||
|
<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 | ||||||
|
Вот так вот надо??
index.php
0
|
||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,229
|
||||||
| 09.01.2017, 16:48 | ||||||
0
|
||||||
|
0 / 0 / 1
Регистрация: 29.12.2016
Сообщений: 157
|
||
| 09.01.2017, 17:14 | ||
|
Сделала как ты сказал.., ни чего не происходит
0
|
||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,229
|
||||||
| 09.01.2017, 18:01 | ||||||
|
сказал же jQuery подключить
3
|
||||||
|
3 / 3 / 1
Регистрация: 24.03.2013
Сообщений: 304
|
|
| 10.01.2017, 16:31 | |
|
Это вопрос или статья?
0
|
|
|
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
||||||||||||
| 10.01.2017, 18:45 | ||||||||||||
1
|
||||||||||||
|
6 / 6 / 5
Регистрация: 15.01.2016
Сообщений: 220
|
||||||
| 11.01.2017, 13:36 | ||||||
|
Спасибо за статью. Но я не нашёл ответа на свой вопрос. У меня 1 функция в php файле. Он находится в той же папке, что и html файл с кнопкой, при нажатии на которую должна вызываться эта 1 функция.
0
|
||||||
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
||||||
| 12.01.2017, 14:14 | ||||||
|
And82, запрос должен ити на url, как-то так:
404 ошибка означает, что искомый ресурс не найдет, что в вашем случае совершенно очевидно.
0
|
||||||
|
|
|
| 30.01.2017, 16:45 | |
|
Еще немного Аякса для начинающих:
Пример простейшего калькулятора на PHP без перезагрузки страницы (чистый Ajax, без jQuery и других библиотек)
0
|
|
|
126 / 2 / 1
Регистрация: 24.07.2015
Сообщений: 17
|
|||||||||||
| 17.02.2017, 20:22 | |||||||||||
|
Здравствуйте, уважаемые.
Подскажите пож-та, - по вашему примеру выше, сделал свою форму - все ОК! А как сделать, чтобы ответ (который: <div id="result"></div>) выводился во всплывающем окне, но не просто как уведомление, а как html,-чтобы ему можно было стили задать: Файл ajax.php с формой:
![]() Спасибо заранее.
0
|
|||||||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,229
|
||
| 17.02.2017, 21:03 | ||
|
1
|
||
|
126 / 2 / 1
Регистрация: 24.07.2015
Сообщений: 17
|
||
| 17.02.2017, 22:14 | ||
|
Сделал так: <div id="result" style="position:absolute;display:none;ma rgin:0 auto;"></div> и после "$('#result').html(res);//выводим ответ с сервера в контейнер с id='result'" добавил $('#result').show(); Что-то ничего не поменялось.. Что не так? Добавлено через 53 минуты нету всплывающего окна..(( Понимаю, что должно быть просто, но рыская дальше по форуму и интернету ничего не могу человеческого найти, а то, что нахожу - больше похоже на костыли..(
0
|
||
| 17.02.2017, 22:14 | |
|
Помогаю со студенческими работами здесь
20
AJAX. Как сделать так, чтобы данные обновлялись в таблице без перезагрузки страницы? Пример простейшего калькулятора на PHP без перезагрузки страницы (чистый Ajax, без jQuery и других библиотек) Загрузка контента без перезагрузки страницы Php Mysql AJAX
Как заставить этот код работать без перезагрузки страницы (ajax) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|