- Примеры отправки AJAX JQuery
- GET запрос
- Код можно сократить используя функцию $.get
- Код файла index.php
- POST запросы
- Или сокращенная версия – функция $.post
- Код файла index.php
- Отправка формы через AJAX
- Код файла handler.php
- Работа с JSON
- Короткая версия
- Код файла json.php
- Возможные проблемы
- Выполнение JS загруженного через AJAX
- Или
- Дождаться выполнения AJAX запроса
- Отправка HTTP заголовков
- Обработка ошибок
- Комментарии 4
- Load Data From MySQL Database in PHP Using jQuery Ajax
- jQuery Ajax Load
- Retrieve MySQL Data in the HTML Table Using jQuery AJAX
- Create a database connection in PHP
- Insert Records in the Table
- Create a Table Using Bootstrap
- Create jQuery AJAX Function
- Conclusion
Примеры отправки AJAX JQuery
AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
Полное описание функции AJAX на jquery.com.
GET запрос
Запрос идет на index.php с параметром « text » и значением « Текст » через метод GET.
По сути это то же самое что перейти в браузере по адресу – http://site.com/index.php?text=Текст
В результате запроса index.php вернет строку «Данные приняты – Текст», которая будет выведена в сообщении alert.
$.ajax(< url: '/index.php', /* Куда пойдет запрос */ method: 'get', /* Метод передачи (post или get) */ dataType: 'html', /* Тип данных в ответе (xml, json, script, html). */ data: , /* Параметры передаваемые в запросе. */ success: function(data) < /* функция которая будет выполнена после успешного запроса. */ alert(data); /* В переменной data содержится ответ от index.php. */ >>);
Код можно сократить используя функцию $.get
$.get('/index.php', , function(data)< alert(data); >);
Код файла index.php
echo 'Данные приняты - ' . $_GET['text'];
GET запросы могут кэшироваться браузером или сервером, чтобы этого избежать нужно добавить в функцию параметр – cache: false .
POST запросы
$.ajax(< url: '/index.php', method: 'post', dataType: 'html', data: , success: function(data) < alert(data); >>);
Или сокращенная версия – функция $.post
$.post('/index.php', , function(data)< alert(data); >);
Код файла index.php
echo 'Данные приняты - ' . $_POST['text'];
POST запросы ни когда не кэшироваться.
Отправка формы через AJAX
При отправке формы применяется функция serialize() , подробнее на jquery.com.
Она обходит форму и собирает названия и заполненные пользователем значения полей и возвращает в виде массива – .
- Кнопки формы по которым был клик игнорируются, в результате функции их не будет.
- serialize можно применить только к тегу form и полям формы, т.е. $(‘div.form_container’).serialize(); – вернет пустой результат.
Пример отправки и обработки формы:
Код файла handler.php
if (empty($_POST['login'])) < echo 'Укажите логин'; >elseif (empty($_POST['password'])) < echo 'Укажите пароль'; >else
Работа с JSON
Идеальный вариант когда нужно работать с массивами данных.
Короткая версия
$.getJSON('/json.php', function(data) < alert(data.text); alert(data.error); >);
$.getJSON передает запрос только через GET.
Код файла json.php
header('Content-Type: application/json'); $result = array( 'text' => 'Текст', 'error' => 'Ошибка' ); echo json_encode($result);
Возможные проблемы
При работе с JSON может всплыть одна ошибка – после запроса сервер отдал результат, все хорошо, но метод success не срабатывает. Причина кроется в серверной части (PHP) т.к. перед данными могут появится управляющие символы, например:
Из-за них ответ считается не валидным и считается как ошибочный запрос. В таких случаях помогает очистка буфера вывода ob_end_clean (если он используется на сайте).
. // Очистка буфера ob_end_clean(); header('Content-Type: application/json'); echo json_encode($result, JSON_UNESCAPED_UNICODE); exit();
Выполнение JS загруженного через AJAX
В JQuery реализована функция подгруздки кода JS через AJAX, после успешного запроса он будет сразу выполнен.
Или
Дождаться выполнения AJAX запроса
По умолчанию в JQuery AJAX запросы выполняются асинхронно. Т.е. запрос не задерживает выполнение программы пока ждет результатов, а работает параллельно. Простой пример:
var text = ''; $.ajax( < url: '/index.php', method: 'get', dataType: 'html', success: function(data)< text = data; >>); alert(text); /* Переменная будет пустая. */
Переменная text будет пустая, а не как ожидается текст который вернул index.php Чтобы включить синхронный режим нужно добавить параметр async: false .
Соответственно синхронный запрос будет вешать прогрузку страницы если код выполняется в страницы.
var text = ''; $.ajax( < url: '/index.php', method: 'get', dataType: 'html', async: false, success: function(data)< text = data; >>); alert(text); /* В переменной будет результат из index.php. */
Отправка HTTP заголовков
$.ajax(< url: '/index.php', method: 'get', dataType: 'html', headers: , success: function(data) < console.dir(data); >>);
В PHP они будут доступны в массиве $_SERVER , ключ массива переводится в верхний регистр с приставкой HTTP_ , например:
Обработка ошибок
Через параметр error задается callback-функция, которая будет вызвана в случаи если запрашиваемый ресурс отдал 404, 500 или другой код.
$.ajax(< url: '/index.php', method: 'get', dataType: 'json', success: function(data)< console.dir(data); >, error: function (jqXHR, exception) < if (jqXHR.status === 0) < alert('Not connect. Verify Network.'); >else if (jqXHR.status == 404) < alert('Requested page not found (404).'); >else if (jqXHR.status == 500) < alert('Internal Server Error (500).'); >else if (exception === 'parsererror') < alert('Requested JSON parse failed.'); >else if (exception === 'timeout') < alert('Time out error.'); >else if (exception === 'abort') < alert('Ajax request aborted.'); >else < alert('Uncaught Error. ' + jqXHR.responseText); >> >);
Комментарии 4
В примере Отправка формы через AJAX страница перезагружается. Видимо нужно добавить return false после $.ajax(<>);
$("#form").on("submit", function() $.ajax( url: '/handler.php',
method: 'post',
dataType: 'html',
data: $(this).serialize(),
success: function(data) $('#message').html(data);
>
>);
return false;
>);
$("#form").on("submit", function(e).
e.preventDefault();
>)
У меня вообще не работали POST запросы, особенно для меня, для начинающего было очень сложно, работали только GET, очень долго голову ломал почему так происходит. Нашёл пример на другом сайте, который работал долго сравнивал и думал почему так. Здесь пример не работает, а на другом сайте рабочий пример оказался.
Так вот:
$.ajax( url: ‘/index.php’,
method: ‘post’,
dataType: ‘html’,
data: ,
success: function(data) alert(data);
>
>);
Оказывается чтобы у меня заработали именно POST запросы надо было поменять строчку:
«method: ‘post’,» на:
«type: ‘post’,» и всё сразу заработало после этого. А я ведь ни один день ломал голову из-за этой ошибки!
Load Data From MySQL Database in PHP Using jQuery Ajax
The jQuery Ajax call will load the data from the database or from any file without refreshing the entire page. Using jQuery Ajax call the data loads asynchronously. This means the multiple functions can be executed at the same time not one by one. This is only possible by using Ajax. It optimizes the speed of the website and makes it fast than normal. Today, I will be showing you how to load data from the MySQL database into PHP using jQuery Ajax. If you don’t know how to submit form data in PHP MySQL without page refresh then please go through my previous post.
jQuery Ajax Load
- The jQuery provides a load() method.
- This method is used to load the data from the server or the local system or from any file.
- It returns the data into the selected element which is defined for any specific area.
- jQuery load() method provides a very simple way to load the data asynchronously from the webserver.
- The basic syntax of this method is :
The parameter inside the jQuery load() method has the following meaning:
- The first parameter (URL) specifies the source of the file that is to be load.
- The second parameter (data) which specifies the query string (i.e. key/value pairs) that is sent to the webserver along with the request.
- The last parameter (complete) is just a callback function that executes when the request completes. It is just like a response which returns after the execution completes.
- Create a PHP file and paste the below code.
- Now, create a text file with some content. In my case, I have created a .txt file with name content.txt and written some content as- This is programming fields.
Save and execute the above code. You will see that the content of the .txt file will be loaded without refreshing the page.
Retrieve MySQL Data in the HTML Table Using jQuery AJAX
In the next step, we are going to create a load more functionality using jQuery AJAX call in PHP. In this functionality, there will be a button. So, when you will click on the button, It will load 2 records from the database. On every click of the button, It will load the data from the database. Here, we will design a table layout along with a button. On the click of the button, the records will be loaded from the database without refreshing the page. So let’s create a database connection.
Create a database connection in PHP
- First of all, create a new PHP file for creating the database connection. In my case it is db-confg.php.
- Now create a database if not created, or you can use the existing database.
- Create a new table with name registration.
- Here, is the database structure of the registration table.
Insert Records in the Table
Create a Table Using Bootstrap
- Now, we’ll be creating another PHP file named index.php. Here, we’ll be creating a table layout using bootstrap.
- So, include the bootstrap CDN or you can use the source file by downloading it.
- Here, is the source code of the index.php file.
First Name Last Name Email Address City State Zipcode 0) < $students = mysqli_fetch_all($result,MYSQLI_ASSOC); foreach($students as $student) : ?> ?>
Load More..