Để thực hiện một yêu cầu Ajax bằng jQuery, bạn có thể thực hiện điều này bằng đoạn mã sau.
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:
Phương pháp 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);
}
});
Cách 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');
});
Các .success()
, .error()
và các .complete()
cuộc gọi lại không được chấp nhận kể từ jQuery 1.8 . Để chuẩn bị mã của bạn để loại bỏ cuối cùng của họ, sử dụng .done()
, .fail()
và .always()
để thay thế.
MDN: abort()
. Nếu yêu cầu đã được gửi đi, phương thức này sẽ hủy bỏ yêu cầu.
Vì vậy, chúng tôi đã gửi thành công yêu cầu Ajax và giờ là lúc lấy dữ liệu về máy chủ.
PHP
Khi chúng tôi thực hiện một yêu cầu POST trong một cuộc gọi Ajax ( type: "post"
), bây giờ chúng tôi có thể lấy dữ liệu bằng cách sử dụng $_REQUEST
hoặc $_POST
:
$bar = $_POST['bar']
Bạn cũng có thể xem những gì bạn nhận được trong yêu cầu POST bằng cách đơn giản. BTW, đảm bảo rằng $_POST
được thiết lập. Nếu không, bạn sẽ nhận được một lỗi.
var_dump($_POST);
// Or
print_r($_POST);
Và bạn đang chèn một giá trị vào cơ sở dữ liệu. Hãy chắc chắn rằng bạn đang nhạy cảm hoặc thoát tất cả các yêu cầu (cho dù bạn đã thực hiện GET hoặc POST) trước khi thực hiện truy vấn. Tốt nhất sẽ được sử dụng báo cáo chuẩn bị .
Và nếu bạn muốn trả lại bất kỳ dữ liệu nào cho trang, bạn có thể làm điều đó bằng cách chỉ lặp lại dữ liệu đó như bên dưới.
// 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'));
Và sau đó bạn có thể có được nó như sau:
ajaxRequest.done(function (response){
alert(response);
});
Có một vài phương pháp tốc ký . Bạn có thể sử dụng mã dưới đây. Nó làm công việc tương tự.
var ajaxRequest= $.post("test.php", values, function(data) {
alert(data);
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});