2009-08-27 39 views
36

Giả sử tôi muốn thực thi một tập lệnh PHP. Cách nào tốt hơn?jQuery ajax() vs get()/post()

này:

$.ajax({ 
    type: "GET", 
    url: "php-script.php", 
    dataType: "script" 
}); 

Hoặc này:

$.get("php-script.php", function(data) { }); 
+0

Hiệu ứng của tập lệnh là gì? –

Trả lời

29

Trong trường hợp này, tôi muốn nói $.get, vì nó ngay lập tức xóa loại yêu cầu. Ở mức độ nào, nó chỉ là viết tắt của cuộc gọi ajax lớn hơn và nhiều tùy chọn hơn, và chuyển đổi giữa hai điều này là tầm thường trong trường hợp xấu nhất.

Nếu bạn nghĩ rằng bạn sẽ cần các tùy chọn ưa thích $.ajax, hãy sử dụng $.ajax. Nếu bạn không sử dụng các phương pháp thuận tiện jQuery cung cấp, chẳng hạn như .load, $.get vv

22

$.get() chỉ là một phím tắt cho một cuộc gọi $.ajax() kiểu "GET".

Để xây dựng $.get() chỉ cần gọi $.ajax() ở chế độ nền. Kiểu tắt của nó giống như những gì $(function(){})$(document).ready(function(){}). Trường hợp sử dụng phổ biến cho $.get là để có được một cách nhanh chóng và đơn giản nhận được, $.ajax nên được sử dụng nếu bạn cần phải làm một cái gì đó phức tạp hơn một chút hoặc nếu bạn cần sự linh hoạt thêm.

+0

$ .get kết thúc tốt đẹp $ .ajax với loại = "GET". Nó không chỉ là một phím tắt, sự khác biệt chính là bạn không thể thực hiện một yêu cầu POST tới máy chủ bằng cách sử dụng $ .get. – karim79

+3

uhh tôi đã có thể nghĩ rằng rõ ràng ... tôi đã cập nhật nó kể từ khi bạn nghĩ rằng nó không. –

+0

@Darko Z - không có vẻ gì không rõ ràng từ câu trả lời của bạn, đó là lý do tại sao tôi nhận xét - chỉ ra điều đó. Bản cập nhật của bạn, tuy nhiên, làm cho nó rõ ràng. – karim79

1

$.get()/$.post() không hỗ trợ beforeSend như $.ajax() làm. Vì vậy, bạn không thể ví dụ hiển thị một spinner trong khi tải trực tiếp. Nhưng bạn có thể làm điều này với .ajaxStart().