Щоб зробити запит Ajax за допомогою jQuery, ви можете зробити це за допомогою наступного коду.
HTML:
<form id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
<!-- The result of the search will be rendered inside this div -->
<div id="result"></div>
JavaScript:
Спосіб 1
/* Get from elements values */
var values = $(this).serialize();
$.ajax({
url: "test.php",
type: "post",
data: values ,
success: function (response) {
// You will get response from your PHP page (what you echo or print)
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
Спосіб 2
/* Attach a submit handler to the form */
$("#foo").submit(function(event) {
var ajaxRequest;
/* Stop form from submitting normally */
event.preventDefault();
/* Clear result div*/
$("#result").html('');
/* Get from elements values */
var values = $(this).serialize();
/* Send the data using post and put the results in a div. */
/* I am not aborting the previous request, because it's an
asynchronous request, meaning once it's sent it's out
there. But in case you want to abort it you can do it
by abort(). jQuery Ajax methods return an XMLHttpRequest
object, so you can just use abort(). */
ajaxRequest= $.ajax({
url: "test.php",
type: "post",
data: values
});
/* Request can be aborted by ajaxRequest.abort() */
ajaxRequest.done(function (response, textStatus, jqXHR){
// Show successfully for submit message
$("#result").html('Submitted successfully');
});
/* On failure of request this function will be called */
ajaxRequest.fail(function (){
// Show error
$("#result").html('There is error while submit');
});
Відхилення .success()
, .error()
та .complete()
зворотні дзвінки застаріли, починаючи з jQuery 1.8 . Для того, щоб підготувати свій код для їх подальшого видалення, використовувати .done()
, .fail()
і .always()
замість цього.
MDN: abort()
. Якщо запит вже надісланий, цей метод скасує запит.
Тож ми успішно надіслали запит Ajax, і тепер прийшов час захопити дані на сервер.
PHP
Коли ми робимо запит POST у виклику Ajax ( type: "post"
), тепер ми можемо захоплювати дані, використовуючи $_REQUEST
або $_POST
:
$bar = $_POST['bar']
Ви також можете побачити, що ви отримуєте в запиті POST, просто будь-яким. BTW, переконайтеся, що $_POST
встановлено. Інакше ви отримаєте помилку.
var_dump($_POST);
// Or
print_r($_POST);
І ви вставляєте значення в базу даних. Переконайтеся , що ви сенсибілізації або рятуючись Всі запити (зробив ви GET або POST) правильно , перш ніж зробити запит. Найкраще було б використовувати підготовлені заяви .
І якщо ви хочете повернути будь-які дані назад на сторінку, ви можете це зробити, просто повторивши ці дані, як показано нижче.
// 1. Without JSON
echo "Hello, this is one"
// 2. By JSON. Then here is where I want to send a value back to the success of the Ajax below
echo json_encode(array('returned_val' => 'yoho'));
І тоді ви можете отримати це так:
ajaxRequest.done(function (response){
alert(response);
});
Існує кілька скорочених методів . Ви можете використовувати наведений нижче код. Це робить таку ж роботу.
var ajaxRequest= $.post("test.php", values, function(data) {
alert(data);
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});