Sự khác biệt giữa hoàn thành và thành công trong AJAX là gì?

Tôi đã làm việc với jQuery và AJAX được vài tuần rồi và tôi đã thấy hai cách khác nhau để 'tiếp tục' tập lệnh sau khi lệnh gọi được thực hiện.

$.ajax[{url: '/'}].done[function[data] {}];
0 và
$.ajax[{url: '/'}].done[function[data] {}];
1

Từ bản tóm tắt từ tài liệu jQuery, chúng tôi nhận được

xong[]. Sự miêu tả. Thêm trình xử lý sẽ được gọi khi đối tượng Trì hoãn được giải quyết

sự thành công. [. tùy chọn ajax[]]. Một chức năng được gọi nếu yêu cầu thành công

Vì vậy, cả hai đều làm điều gì đó sau khi cuộc gọi AJAX đã được hoàn thành/giải quyết. Tôi có thể sử dụng cái này hay cái kia một cách ngẫu nhiên không?

Giải pháp tốt nhất

$.ajax[{url: '/'}].done[function[data] {}];
0 là tên truyền thống của gọi lại thành công trong jQuery, được định nghĩa là một tùy chọn trong lệnh gọi ajax. Tuy nhiên, kể từ khi triển khai
$.ajax[{url: '/'}].done[function[data] {}];
1 và các cuộc gọi lại tinh vi hơn, thì
$.ajax[{url: '/'}].done[function[data] {}];
2 là cách ưa thích để triển khai các cuộc gọi lại thành công, vì nó có thể được gọi trên bất kỳ
$.ajax[{url: '/'}].done[function[data] {}];
3 nào

Ví dụ, thành công

$.ajax[{
  url: '/',
  success: function[data] {}
}];

Ví dụ, xong

$.ajax[{url: '/'}].done[function[data] {}];

Điều thú vị về

$.ajax[{url: '/'}].done[function[data] {}];
2 là giá trị trả về của
$.ajax[{url: '/'}].done[function[data] {}];
5 hiện là một lời hứa hoãn lại có thể được ràng buộc với bất kỳ nơi nào khác trong ứng dụng của bạn. Vì vậy, giả sử bạn muốn thực hiện cuộc gọi ajax này từ một vài nơi khác nhau. Thay vì chuyển hàm thành công của bạn dưới dạng một tùy chọn cho hàm thực hiện cuộc gọi ajax này, bạn chỉ cần để hàm trả về chính
$.ajax[{url: '/'}].done[function[data] {}];
5 và liên kết các cuộc gọi lại của bạn với
$.ajax[{url: '/'}].done[function[data] {}];
2,
$.ajax[{url: '/'}].done[function[data] {}];
8,
$.ajax[{url: '/'}].done[function[data] {}];
9 hoặc bất kỳ thứ gì. Lưu ý rằng
$.ajax[{url: '/'}].done[function[data] {}];
20 là một cuộc gọi lại sẽ chạy cho dù yêu cầu thành công hay thất bại.
$.ajax[{url: '/'}].done[function[data] {}];
2 sẽ chỉ được kích hoạt khi thành công

Ví dụ

$.ajax[{url: '/'}].done[function[data] {}];
2

Một lợi ích quan trọng của điều này về khả năng bảo trì là bạn đã bao bọc cơ chế ajax của mình trong một chức năng dành riêng cho ứng dụng. Nếu bạn quyết định rằng bạn cần lệnh gọi

$.ajax[{url: '/'}].done[function[data] {}];
5 của mình hoạt động theo cách khác trong tương lai hoặc bạn sử dụng một phương thức ajax khác hoặc bạn rời khỏi jQuery, thì bạn chỉ phải thay đổi định nghĩa
$.ajax[{url: '/'}].done[function[data] {}];
23 [đảm bảo trả lại một lời hứa hoặc ít nhất là một
$.ajax[{url: '/'}].done[function[data] {}];
2 . Tất cả các tài liệu tham khảo khác trong ứng dụng có thể giữ nguyên

Có nhiều thứ khác [thú vị hơn nhiều] bạn có thể làm với

$.ajax[{url: '/'}].done[function[data] {}];
25, một trong số đó là sử dụng
$.ajax[{url: '/'}].done[function[data] {}];
26 để kích hoạt lỗi đối với một lỗi được báo cáo bởi máy chủ, ngay cả khi bản thân yêu cầu
$.ajax[{url: '/'}].done[function[data] {}];
5 đã thành công. Ví dụ

$.ajax[{url: '/'}].done[function[data] {}];
1

Đọc thêm về

$.ajax[{url: '/'}].done[function[data] {}];
25 tại đây. http. //api. jquery. com/category/deferred-object/

GHI CHÚ. Kể từ jQuery 1. 8,

$.ajax[{url: '/'}].done[function[data] {}];
26 không được chấp nhận để sử dụng
$.ajax[{url: '/'}].done[function[data] {}];
9 theo cùng một cách

Giải pháp liên quan

Javascript – Mẹo và Thủ thuật jQuery

Tạo một phần tử HTML và giữ một tham chiếu

$.ajax[{url: '/'}].done[function[data] {}];
5


Kiểm tra nếu một phần tử tồn tại

$.ajax[{url: '/'}].done[function[data] {}];
6


Viết bộ chọn của riêng bạn

$.ajax[{url: '/'}].done[function[data] {}];
7

Xử lý lỗi JQuery Ajax, hiển thị thông báo ngoại lệ tùy chỉnh

Đảm bảo rằng bạn đang đặt

$.ajax[{url: '/'}].done[function[data] {}];
11 thành giá trị khác 200. Viết tin nhắn ngoại lệ của bạn bằng cách sử dụng
$.ajax[{url: '/'}].done[function[data] {}];
12, sau đó sử dụng

Sự khác biệt giữa hoàn thành và thành công trong AJAX là gì?

success[] chỉ được gọi nếu máy chủ web của bạn phản hồi với tiêu đề HTTP 200 OK - về cơ bản là khi mọi thứ đều ổn. Tuy nhiên,. Complete[] sẽ luôn được gọi cho dù cuộc gọi ajax có thành công hay không - có thể nó xuất ra lỗi và trả về lỗi -. Complete[] sẽ vẫn được gọi

Thành công có nghĩa là gì trong AJAX?

thành công. Hàm gọi lại được thực thi nếu yêu cầu thành công . nó lấy dữ liệu trả về làm đối số. Nó cũng được chuyển trạng thái văn bản của phản hồi. loại dữ liệu. Loại dữ liệu mong đợi từ máy chủ.

Điều gì được thực hiện [] trong cuộc gọi AJAX?

Hàm done[] được cung cấp một hàm dưới dạng tham số . Hàm gọi lại được truyền dưới dạng tham số cho hàm done[] được thực thi nếu yêu cầu AJAX thành công. Hàm gọi lại có ba tham số. dữ liệu, textStatus và jqXHR. Tham số dữ liệu là dữ liệu được trả về bởi máy chủ.

Gọi lại thành công là gì?

Hàm gọi lại thành công được gọi nếu yêu cầu thành công . Ba đối số khác nhau được truyền cho hàm. Dữ liệu trở lại từ máy chủ.

Chủ Đề