ในการสร้างคำขอ 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");
});