2009-02-05 24 views
5

Tôi đã đọc trên Ajax và muốn xem từ cộng đồng stackoverflow nếu tôi hiểu mọi thứ chính xác.Tôi có hiểu Ajax đúng không?

Vì vậy, tương tác máy khách thông thường là người dùng kéo lên một loại trình duyệt web trong url và yêu cầu HTTP được gửi tới máy chủ yêu cầu trang và tài nguyên (css, pics) từ máy chủ web. Máy chủ web trả lời khách hàng qua HTTP trang/tài nguyên được yêu cầu và trình duyệt hiển thị html/JavaScript để người dùng xem trang.

1) Vì vậy, sẽ an toàn khi nói rằng đối tượng XMLHttpRequest (XHR) đang thực hiện quy trình tương tự như trình duyệt ngoại trừ việc bạn không yêu cầu html từ máy chủ, văn bản yêu cầu của bạn ở một số loại định dạng?

2) Có đúng là đối tượng XHR giống như đối tượng thông thường có thể được điều khiển bởi chương trình tạo đối tượng (như đối tượng bình thường), nhưng cũng gửi và nhận dữ liệu với chương trình khác (máy chủ web) qua HTTP?

3) Vì vậy, trong tâm trí của tôi khi một XHR được tạo ra nó được nạp vào bộ nhớ và chúng tôi thiết lập một số đối số đối tượng khi chúng ta thực hiện request.open (“GET”, url, true). Khi chúng ta thực hiện một request.send (null) đối tượng về cơ bản cố gắng “GET” url thông qua HTTP và một khi chúng ta lấy lại dữ liệu từ máy chủ, nó được đưa vào đối số responseText. Tôi có hiểu chính xác điều này không?

4) Cũng đồng bộ so với không đồng bộ. Khi tôi nghĩ về sự đồng bộ, tôi nghĩ rằng các bước phải được theo sau theo thứ tự. Ví dụ, tôi nhấn một nút, dữ liệu được gửi đến máy chủ và tôi phải chờ dữ liệu quay lại trước khi tôi có thể làm bất kỳ điều gì khác. Với các kết nối không đồng bộ, tôi sẽ nhấn nút, dữ liệu được gửi đến máy chủ, tôi làm những gì tôi muốn trong khi dữ liệu được gửi lại. Đây có phải là một sự tương tự tốt?

Trả lời

7

1) Không. Đối tượng XMLHttpRequest thực hiện chính xác những gì tên của nó ngụ ý - nó khởi tạo một yêu cầu HTTP. Yêu cầu này có thể bằng XML hoặc HTML hoặc PHP. Vào cuối ngày, trình duyệt không quan tâm, bởi vì trong một yêu cầu AJAX, nó không phân tích cú pháp yêu cầu - bạn phải tự làm điều đó. Vì vậy, nó không tự động hiển thị HTML từ một yêu cầu AJAX.

2) Tôi không chắc chắn về thao tác (đối tượng XHR có thể không thay đổi) nhưng có thể. Bạn có bao giờ cần phải mở rộng nó hoặc thao tác nó? Có, bạn có thể thay đổi các thuộc tính của đối tượng, v.v. Tôi xin lỗi. Tôi không hiểu bạn lúc đầu :)

3) Đúng vậy.

4) Đó là sự tương tự tuyệt vời. Đó là chính xác những gì sẽ xảy ra. Tương tự khác là đường cao tốc 4 làn đường là không đồng bộ vì đường một chiều là đồng bộ. Nếu một chiếc xe bị phá vỡ trên đường cao tốc 4 làn xe, phần còn lại có thể tiếp tục di chuyển với vận tốc bình thường của họ - nhưng nếu một xe bị hỏng trên đường một chiều, mọi thứ sẽ bị đóng băng. :)

+0

Tôi nghĩ thao tác XHR chỉ có nghĩa là thiết lập các thuộc tính và phương pháp gọi trên đối tượng. – andynormancx

+0

Hầu hết các đường một chiều tôi đã thấy là nhiều làn đường ... :) –

0

Dường như bạn có nắm bắt công việc về cách AJAX hoạt động. Tôi không thể thấy nhiều để không đồng ý với bản tóm tắt về hệ thống ống nước của ứng dụng AJAX.

Tuy nhiên, tôi sẽ nói rằng với đối tượng XMLHttpRequest bạn không bị giới hạn GET. Bạn cũng có thể sử dụng POST và các động từ HTTP khác.

Với các cuộc gọi không đồng bộ, bạn đăng ký hàm gọi lại, đối tượng XMLHttpRequest gọi phương thức của bạn khi yêu cầu async hoàn tất.

0

Có vẻ ổn với tôi.

Điểm đầu tiên của bạn mặc dù không hoàn toàn chính xác, bạn có thể yêu cầu html từ máy chủ bằng cách sử dụng ajax không phải nhắn tin, json hoặc xml giống như hầu hết các ví dụ hiển thị.

Các vấn đề liên quan