Trong hướng dẫn này, bạn sẽ tìm hiểu cách gửi và nhận dữ liệu từ máy chủ web thông qua Ajax thông qua phương thức HTTP GET hoặc POST bằng jQuery
Các phương thức
jQuery post[] Demo
Name:
Comment:
3 và
jQuery post[] Demo
Name:
Comment:
4 của jQuery
jQuery post[] Demo
Name:
Comment:
jQuery post[] Demo
Name:
Comment:
Các phương thức
jQuery post[] Demo
Name:
Comment:
3 và
jQuery post[] Demo
Name:
Comment:
4 của jQuery cung cấp các công cụ đơn giản để gửi và truy xuất dữ liệu không đồng bộ từ máy chủ web. Cả hai phương thức đều khá giống nhau, ngoại trừ một điểm khác biệt lớn —
jQuery post[] Demo
Name:
Comment:
3 thực hiện các yêu cầu Ajax bằng cách sử dụng , trong khi
jQuery post[] Demo
Name:
Comment:
4 thực hiện các yêu cầu Ajax bằng cách sử dụngCú pháp cơ bản của các phương thức này có thể được đưa ra với
$. get[URL, dữ liệu, thành công]; . bài đăng [URL, dữ liệu, thành công];
Các tham số trong cú pháp trên có ý nghĩa như sau
- Tham số URL bắt buộc chỉ định URL mà yêu cầu được gửi tới
- Tham số dữ liệu tùy chọn chỉ định một bộ chuỗi truy vấn [i. e. cặp khóa/giá trị] được gửi đến máy chủ web cùng với yêu cầu
- Tham số thành công tùy chọn về cơ bản là chức năng gọi lại được thực thi nếu yêu cầu thành công. Nó thường được sử dụng để lấy dữ liệu trả về
Ghi chú. Các phương thức HTTP GET và POST được sử dụng để gửi yêu cầu từ trình duyệt đến máy chủ. Sự khác biệt chính giữa các phương pháp này là cách dữ liệu được truyền đến máy chủ. Xem hướng dẫn về phương thức GET và POST để biết giải thích chi tiết và so sánh giữa hai phương thức này
Thực hiện yêu cầu GET với AJAX bằng jQuery
Ví dụ sau sử dụng phương thức jQuery
jQuery post[] Demo
Name:
Comment:
3 để thực hiện một yêu cầu Ajax tới "date-time. php" bằng phương thức HTTP GET. Nó chỉ lấy ngày và giờ được trả về từ máy chủ và hiển thị nó trong trình duyệt mà không cần làm mới trang
jQuery get[] Demo
Content of the result DIV box will be replaced by the server date and time
Load Date and Time
Đây là "ngày-giờ" của chúng tôi. php" chỉ xuất ra ngày và giờ hiện tại của máy chủ
Mẹo. Nếu bạn gặp bất kỳ khó khăn nào khi chạy cục bộ các ví dụ này trên PC của mình, vui lòng xem hướng dẫn về tải jQuery Ajax để biết giải pháp
Bạn cũng có thể gửi một số dữ liệu đến máy chủ với yêu cầu. Trong ví dụ sau, mã jQuery tạo một yêu cầu Ajax tới "tạo bảng. php" cũng như gửi một số dữ liệu bổ sung đến máy chủ cùng với yêu cầu
jQuery get[] Demo
Enter a Number:
Show Multiplication Table
Đây là tập lệnh PHP của "tạo bảng. php" chỉ cần xuất bảng cửu chương cho số được người dùng nhập khi nhấp vào nút
0]{
echo "";
for[$i=0; $i
Thực hiện yêu cầu POST với AJAX bằng jQuery
Các yêu cầu POST giống hệt với các yêu cầu GET trong jQuery. Vì vậy, nói chung, phương pháp nào bạn nên sử dụng
jQuery post[] Demo
Name:
Comment:
3 hoặc
jQuery post[] Demo
Name:
Comment:
4 về cơ bản phụ thuộc vào yêu cầu của mã phía máy chủ của bạn. Nếu bạn có một lượng lớn dữ liệu được truyền đi [e. g. dữ liệu biểu mẫu], bạn cần sử dụng POST, vì GET có giới hạn nghiêm ngặt đối với việc truyền dữ liệu
jQuery post[] Demo
Name:
Comment:
Đây là "bình luận hiển thị" của chúng tôi. php" chỉ xuất dữ liệu do người dùng nhập vào
";
echo "Here's the comment what you've entered: $comment";
?>
Bây giờ bạn đã học cách thực hiện các thao tác Ajax khác nhau như tải dữ liệu, gửi biểu mẫu, v.v. sử dụng jQuery không đồng bộ. Trước khi kết thúc chương này, hãy xem thêm một ví dụ cổ điển về Ajax sẽ chỉ cho bạn cách điền danh sách thả xuống của tiểu bang hoặc thành phố dựa trên tùy chọn được chọn trong danh sách thả xuống quốc gia bằng cách sử dụng jQuery
Hàm gọi lại được thực thi nếu yêu cầu thành công. Bắt buộc nếu cung cấp
0, nhưng bạn có thể sử dụng
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
1 hoặc
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
2 làm trình giữ chỗ
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
loại dữ liệu
Loại.
Loại dữ liệu mong đợi từ máy chủ. Vỡ nợ. Đoán thông minh [xml, json, tập lệnh, văn bản, html]
phiên bản thêm. 1. 12 và 2. 2
cài đặt
Loại.
Một tập hợp các cặp khóa/giá trị cấu hình yêu cầu Ajax. Tất cả các thuộc tính ngoại trừ
3 là tùy chọn. Có thể đặt mặc định cho bất kỳ tùy chọn nào với $. cài đặt ajax[]. Xem danh sách đầy đủ tất cả các cài đặt. Tùy chọn loại sẽ tự động được đặt thành$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
4$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
Đây là một hàm Ajax tốc ký, tương đương với
1
2
3
4
5
6
1Hàm gọi lại
5 được truyền dữ liệu được trả về, dữ liệu này sẽ là phần tử gốc XML, chuỗi văn bản, tệp JavaScript hoặc đối tượng JSON, tùy thuộc vào loại MIME của phản hồi. Nó cũng được chuyển trạng thái văn bản của phản hồi
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
Kể từ jQuery 1. 5, hàm gọi lại
5 cũng được chuyển a [trong jQuery 1. 4, nó đã được thông qua đối tượng
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
7]. Tuy nhiên, do các yêu cầu JSONP và tên miền chéo GET không sử dụng XHR, nên trong những trường hợp đó, các tham số
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
8 và
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
9 được chuyển cho lệnh gọi lại thành công là không xác định
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
Hầu hết các triển khai sẽ chỉ định trình xử lý thành công
1
2
3
4
$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
Ví dụ này tìm nạp đoạn mã HTML được yêu cầu và chèn đoạn mã đó vào trang
Đối tượng jqXHR
Kể từ jQuery 1. 5, tất cả các phương thức Ajax của jQuery đều trả về một siêu đối tượng của đối tượng
80. Đối tượng jQuery XHR này, hay "jqXHR," được trả về bởi 81 thực hiện giao diện Promise, cung cấp cho nó tất cả các thuộc tính, phương thức và hành vi của một Promise [xem Đối tượng bị trì hoãn để biết thêm thông tin]. 82 [đối với thành công], 83 [đối với lỗi] và 84 [đối với hoàn thành, cho dù thành công hay lỗi; được thêm vào trong jQuery 1. 6] các phương thức lấy một đối số hàm được gọi khi yêu cầu kết thúc. Để biết thông tin về các đối số mà hàm này nhận được, hãy xem phần của tài liệu 85Giao diện Promise cũng cho phép các phương thức Ajax của jQuery, bao gồm
81, xâu chuỗi nhiều lệnh gọi lại 87, 88 và 89 trên một yêu cầu và thậm chí gán các lệnh gọi lại này sau khi yêu cầu có thể đã hoàn thành. Nếu yêu cầu đã hoàn thành, cuộc gọi lại sẽ được kích hoạt ngay lập tức1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
8Thông báo Khấu hao
Các phương thức gọi lại
jQuery get[] Demo
Enter a Number:
Show Multiplication Table
90,
jQuery get[] Demo
Enter a Number:
Show Multiplication Table
91 và
jQuery get[] Demo
Enter a Number:
Show Multiplication Table
92 đã bị xóa kể từ jQuery 3. 0. Bạn có thể sử dụng 82, 83 và 84 để thay thếGhi chú bổ sung
- Do các hạn chế về bảo mật của trình duyệt, hầu hết các yêu cầu "Ajax" đều phải tuân theo cùng một chính sách gốc;
- Nếu một yêu cầu với jQuery. get[] trả về một mã lỗi, nó sẽ bị lỗi âm thầm trừ khi tập lệnh cũng được gọi là mã lỗi toàn cầu. phương thức ajaxError[]. Ngoài ra, kể từ jQuery 1. 5, phương thức
96 của đối tượngjQuery get[] Demo Enter a Number: Show Multiplication Table
8 do jQuery trả về. get[] cũng có sẵn để xử lý lỗi$.get[ "ajax/test.html", function[ data ] {
$[ ".result" ].html[ data ];
alert[ "Load was performed." ];
}];
- Các yêu cầu tập lệnh và JSONP không phải tuân theo các hạn chế về chính sách gốc giống nhau
ví dụ
Yêu cầu kiểm tra. trang php, nhưng bỏ qua kết quả trả về
1
jQuery get[] Demo
Enter a Number:
Show Multiplication Table
9Yêu cầu kiểm tra. php và gửi một số dữ liệu bổ sung [trong khi vẫn bỏ qua kết quả trả về]
1
0]{
echo "";
for[$i=0; $i
8Truyền mảng dữ liệu đến máy chủ [trong khi vẫn bỏ qua kết quả trả về]
1
0]{
echo "";
for[$i=0; $i
9Thông báo kết quả từ yêu cầu kiểm tra. php [HTML hoặc XML, tùy thuộc vào nội dung được trả về]
1
2
3
jQuery post[] Demo
Name:
Comment:
0Thông báo kết quả từ yêu cầu kiểm tra. cgi với tải trọng dữ liệu bổ sung [HTML hoặc XML, tùy thuộc vào nội dung được trả về]
1
2
3
4
jQuery post[] Demo
Name:
Comment:
1Get the test.php page contents, which has been returned in json format [], and add it to the page.
1
2
3
4
5
jQuery post[] Demo
Name:
Comment:
2Nhận một trang khác trên cùng một tên miền. Đầu ra để điều khiển cả dữ liệu được trả về và loại dữ liệu được trả về