Sự khác biệt giữa $.ajax()
và $.get()
và là $.load()
gì?
Cái nào tốt hơn để sử dụng và trong điều kiện nào?
Sự khác biệt giữa $.ajax()
và $.get()
và là $.load()
gì?
Cái nào tốt hơn để sử dụng và trong điều kiện nào?
Câu trả lời:
$.ajax()
là cấu hình có cấu hình cao nhất, nơi bạn có quyền kiểm soát chi tiết tốt đối với các tiêu đề HTTP và như vậy. Bạn cũng có thể truy cập trực tiếp vào đối tượng XHR bằng phương thức này. Xử lý lỗi chi tiết hơn một chút cũng được cung cấp. Do đó có thể phức tạp hơn và thường không cần thiết, nhưng đôi khi rất hữu ích. Bạn phải tự xử lý dữ liệu trả về bằng một cuộc gọi lại.
$.get()
chỉ là một tốc ký cho $.ajax()
nhưng trừu tượng hóa một số cấu hình đi, thiết lập các giá trị mặc định hợp lý cho những gì nó ẩn từ bạn. Trả lại dữ liệu cho một cuộc gọi lại. Nó chỉ cho phép các yêu cầu GET được kèm theo $.post()
chức năng cho sự trừu tượng tương tự, chỉ dành cho POST
.load()
tương tự như $.get()
nhưng thêm chức năng cho phép bạn xác định vị trí trong tài liệu được trả về. Do đó, thực sự chỉ có thể sử dụng khi cuộc gọi chỉ sẽ dẫn đến HTML. Nó được gọi hơi khác so với các cuộc gọi khác, toàn cầu, vì nó là một phương thức được liên kết với một phần tử DOM được bao bọc bởi jQuery cụ thể. Do đó, người ta sẽ làm:$('#divWantingContent').load(...)
Cần lưu ý rằng tất cả $.get()
, $.post()
, .load()
là tất cả chỉ là giấy gói cho $.ajax()
như nó được gọi trong nội bộ.
Thêm chi tiết trong tài liệu Ajax của jQuery: http://api.jquery.com/carget/ajax/
Các phương pháp cung cấp các lớp trừu tượng khác nhau.
$.ajax()
cung cấp cho bạn toàn quyền kiểm soát yêu cầu Ajax. Bạn nên sử dụng nó nếu các phương pháp khác không đáp ứng đầy đủ nhu cầu của bạn.
$.get()
thực hiện một GET
yêu cầu Ajax . Dữ liệu được trả về (có thể là bất kỳ dữ liệu nào) sẽ được chuyển đến trình xử lý gọi lại của bạn.
$(selector).load()
sẽ thực thi một GET
yêu cầu Ajax và sẽ đặt nội dung của dữ liệu được trả về đã chọn (phải là văn bản hoặc HTML).
Nó phụ thuộc vào tình huống mà bạn nên sử dụng phương pháp nào. Nếu bạn muốn làm những việc đơn giản, không cần phải bận tâm $.ajax()
.
Ví dụ: bạn sẽ không sử dụng $.load()
, nếu dữ liệu trả về sẽ là JSON cần được xử lý thêm. Ở đây bạn sẽ sử dụng $.ajax()
hoặc $.get()
.
http://api.jquery.com/jQuery.ajax/
jQuery.ajax()
Mô tả: Thực hiện yêu cầu HTTP không đồng bộ (Ajax).
Monty đầy đủ, cho phép bạn thực hiện bất kỳ loại yêu cầu Ajax nào.
http://api.jquery.com/jQuery.get/
jQuery.get()
Mô tả: Tải dữ liệu từ máy chủ bằng yêu cầu HTTP GET.
Chỉ cho phép bạn thực hiện các yêu cầu HTTP GET, yêu cầu cấu hình ít hơn một chút.
.load()
Mô tả: Tải dữ liệu từ máy chủ và đặt HTML được trả về vào phần tử phù hợp.
Chuyên để có được dữ liệu và tiêm nó vào một yếu tố.
Rất cơ bản nhưng
$.load()
: Tải một đoạn html vào thùng chứa DOM.$.get()
: Sử dụng tùy chọn này nếu bạn muốn thực hiện cuộc gọi GET và chơi rộng rãi với phản hồi.$.post()
: Sử dụng tùy chọn này nếu bạn muốn thực hiện cuộc gọi POST và không muốn tải phản hồi vào một số DOM container.$.ajax()
: Sử dụng điều này nếu bạn cần làm gì đó khi XHR thất bại hoặc bạn cần chỉ định các tùy chọn ajax (ví dụ: cache: true) khi đang di chuyển.Lưu ý quan trọng: Phương thức jQuery.load () không chỉ có thể NHẬN mà còn yêu cầu POST , nếu tham số dữ liệu được cung cấp (xem: http://api.jquery.com/load/ )
Kiểu dữ liệu : PlainObject hoặc Chuỗi Một đối tượng hoặc chuỗi đơn giản được gửi đến máy chủ với yêu cầu.
Phương thức yêu cầu Phương thức POST được sử dụng nếu dữ liệu được cung cấp dưới dạng đối tượng; mặt khác, GET được giả định.
Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
Mọi người đều có quyền. Hàm .load
, .get
và .post
, là những cách khác nhau để sử dụng hàm .ajax
.
Cá nhân, tôi thấy hàm thô .ajax rất khó hiểu và thích sử dụng tải, nhận hoặc đăng khi tôi cần.
POST có cấu trúc như sau:
$.post(target, post_data, function(response) { });
NHẬN có những điều sau đây:
$.get(target, post_data, function(response) { });
LOAD có những điều sau đây:
$(*selector*).load(target, post_data, function(response) { });
Như bạn có thể thấy, có rất ít sự khác biệt giữa chúng, bởi vì đó là tình huống quyết định cái nào sẽ sử dụng. Cần gửi thông tin đến một tập tin nội bộ? Sử dụng .post (đây sẽ là hầu hết các trường hợp). Cần gửi thông tin theo cách mà bạn có thể cung cấp một liên kết đến thời điểm cụ thể? Sử dụng .get. Cả hai đều cho phép gọi lại trong đó bạn có thể xử lý phản hồi của các tệp.
Một lưu ý quan trọng là .load hành động theo hai cách khác nhau. Nếu bạn chỉ cung cấp url của tài liệu đích, nó sẽ hoạt động như một get (và tôi nói là hành động vì tôi đã kiểm tra kiểm tra $_POST
trong PHP được gọi trong khi sử dụng hành vi .load mặc định và nó phát hiện $_POST
, không $_GET
, có lẽ chính xác hơn là nói rằng nó hoạt động như .post mà không có bất kỳ đối số); tuy nhiên, như http://api.jquery.com/load/nói rằng, một khi bạn cung cấp một mảng các đối số cho hàm, nó sẽ POST thông tin vào tệp. Dù là trường hợp nào, hàm .load sẽ chèn trực tiếp thông tin vào một phần tử DOM, trong trường hợp NHIỀU rất dễ đọc và rất trực tiếp; nhưng vẫn cung cấp một cuộc gọi lại nếu bạn muốn làm gì đó nhiều hơn với phản hồi. Ngoài ra, .load cho phép bạn trích xuất một khối mã nhất định từ một tệp, cho bạn khả năng lưu một danh mục, ví dụ, trong tệp html và truy xuất trực tiếp các phần của nó (các mục) vào các phần tử DOM.
$.get = $.ajax({type: 'GET'});
$.load()
là một hàm trợ giúp chỉ có thể được gọi trên các phần tử.
$.ajax()
cung cấp cho bạn quyền kiểm soát nhất. bạn có thể chỉ định nếu bạn muốn POST dữ liệu, có nhiều cuộc gọi lại hơn, v.v.
Cả hai đều được sử dụng để gửi một số dữ liệu và nhận được một số phản hồi bằng cách sử dụng dữ liệu đó.
NHẬN : Nhận thông tin được lưu trữ trong máy chủ. (tức là tìm kiếm, tweet, thông tin người). Nếu bạn muốn gửi thông tin thì hãy nhận yêu cầu gửi yêu cầu bằng cách sử dụng process.php?name=subroto
Vì vậy, về cơ bản nó sẽ gửi thông tin qua url. Url không thể xử lý hơn 2036 char. Vì vậy, đối với bài viết blog bạn có thể nhớ nó là không thể?
POST : Đăng làm điều tương tự như NHẬN. Đăng ký người dùng, Đăng nhập người dùng, Gửi dữ liệu lớn, Bài đăng trên Blog. Nếu bạn cần gửi thông tin an toàn thì hãy sử dụng bài đăng hoặc cho dữ liệu lớn vì nó không đi qua url.
AJAX : $.get()
và $.post()
chứa các tính năng là tập hợp con của $.ajax()
. Nó có cấu hình nhiều hơn.
$.get ()
phương pháp, đó là một loại tốc ký cho $.ajax()
. Khi sử dụng $.get ()
, thay vì truyền vào một đối tượng, bạn truyền vào các đối số. Tối thiểu, bạn sẽ cần hai đối số đầu tiên, đó là URL của tệp bạn muốn truy xuất (ví dụ: test.txt) và gọi lại thành công.
Mọi người giải thích chủ đề rất tốt. Có một điểm nữa tôi muốn thêm vào phương thức .load ().
Theo tài liệu Tải nếu bạn thêm bộ chọn hậu tố vào url dữ liệu thì nó sẽ không thực thi các tập lệnh trong khi tải nội dung.
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html #content");
})
Mặt khác, sau khi xóa bộ chọn trong url, tập lệnh trong nội dung mới sẽ chạy. Hãy thử ví dụ này
sau khi xóa #content trong url trong tệp index.html
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html");
})
Không có tính năng xây dựng như vậy được cung cấp bởi các phương pháp khác trong thảo luận.