Hướng dẫn JS

JS TRANG CHỦ Giới thiệu JS JS Đến đâu Đầu ra JS Tuyên bố JS Cú pháp JS Bình luận JS Biến JS JS Hãy JS Const Toán tử JS Số học JS Chuyển nhượng JS Các loại dữ liệu JS Các hàm JS Đối tượng JS Sự kiện JS Chuỗi JS Phương thức chuỗi JS Tìm kiếm chuỗi JS Mẫu chuỗi JS Số JS Phương thức số JS Mảng JS Phương thức mảng JS Sắp xếp mảng JS Lặp lại mảng JS JS Array Const JS ngày Định dạng ngày JS Ngày lấy phương thức JS Phương pháp đặt ngày JS Toán JS JS ngẫu nhiên JS Booleans So sánh JS Điều kiện JS Chuyển đổi JS JS Loop cho JS Loop For In JS Loop For Of JS lặp trong khi JS Break JS lặp lại Bộ JS Bản đồ JS JS Typeof Chuyển đổi loại JS JS Bitwise JS RegExp Lỗi JS Phạm vi JS JS Hoists Chế độ nghiêm ngặt JS JS từ khóa này Hàm mũi tên JS Lớp JS JS JSON Gỡ lỗi JS Hướng dẫn kiểu JS Các phương pháp hay nhất về JS JS sai lầm Hiệu suất JS JS dành riêng từ

Phiên bản JS

Phiên bản JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Lịch sử JS

Đối tượng JS

Định nghĩa đối tượng Thuộc tính đối tượng Phương thức đối tượng Hiển thị đối tượng Người truy cập đối tượng Trình tạo đối tượng Nguyên mẫu đối tượng Đối tượng lặp lại Bộ đối tượng Bản đồ đối tượng Tham chiếu đối tượng

Các hàm JS

Định nghĩa hàm Tham số chức năng Lời mời hàm Gọi hàm Áp dụng chức năng Chức năng đóng cửa

Lớp JS

Giới thiệu Lớp học Kế thừa giai cấp Lớp tĩnh

JS Async

Gọi lại JS JS không đồng bộ JS hứa JS Async / Await

JS HTML DOM

Giới thiệu DOM Phương thức DOM Tài liệu DOM Phần tử DOM DOM HTML Các biểu mẫu DOM DOM CSS Hoạt ảnh DOM Sự kiện DOM Trình xử lý sự kiện DOM Điều hướng DOM Nút DOM Bộ sưu tập DOM Danh sách nút DOM

BOM trình duyệt JS

Cửa sổ JS Màn hình JS Vị trí JS Lịch sử JS JS Navigator JS Popup Alert Thời gian JS JS Cookies

API web JS

Giới thiệu API Web API biểu mẫu web API lịch sử web API lưu trữ web API công nhân web API tìm nạp web API vị trí địa lý web

JS AJAX

Giới thiệu về AJAX AJAX XMLHttp Yêu cầu AJAX Phản hồi AJAX Tệp XML AJAX AJAX PHP AJAX ASP Cơ sở dữ liệu AJAX Ứng dụng AJAX Ví dụ về AJAX

JS JSON

Giới thiệu JSON Cú pháp JSON JSON so với XML Các loại dữ liệu JSON Phân tích cú pháp JSON JSON Stringify Đối tượng JSON Mảng JSON Máy chủ JSON JSON PHP HTML JSON JSON JSONP

JS so với jQuery

Bộ chọn jQuery jQuery HTML jQuery CSS jQuery DOM

Đồ họa JS

Đồ họa JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Ví dụ về JS

Ví dụ về JS JS HTML DOM Đầu vào HTML JS Đối tượng HTML JS Sự kiện HTML JS Trình duyệt JS Trình chỉnh sửa JS Bài tập JS JS Quiz Chứng chỉ JS

Tham khảo JS

Đối tượng JavaScript Đối tượng DOM HTML


AJAX - XMLHttpRequest


Đối tượng XMLHttpRequest được sử dụng để yêu cầu dữ liệu từ máy chủ.


Gửi yêu cầu đến máy chủ

Để gửi yêu cầu đến máy chủ, chúng tôi sử dụng phương thức open () và send () của XMLHttpRequestđối tượng:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

Url - Tệp trên máy chủ

Tham số url của open()phương thức, là một địa chỉ đến một tệp trên máy chủ:

xhttp.open("GET", "ajax_test.asp", true);

Tệp có thể là bất kỳ loại tệp nào, như .txt và .xml hoặc tệp kịch bản máy chủ như .asp và .php (có thể thực hiện các hành động trên máy chủ trước khi gửi phản hồi trở lại).


Không đồng bộ - Đúng hay Sai?

Yêu cầu máy chủ phải được gửi không đồng bộ.

Tham số async của phương thức open () phải được đặt thành true:

xhttp.open("GET", "ajax_test.asp", true);

Bằng cách gửi không đồng bộ, JavaScript không phải đợi phản hồi của máy chủ mà thay vào đó có thể:

  • thực thi các tập lệnh khác trong khi chờ phản hồi của máy chủ
  • xử lý phản hồi sau khi phản hồi đã sẵn sàng

Giá trị mặc định cho tham số async là async = true.

Bạn có thể xóa tham số thứ ba một cách an toàn khỏi mã của mình.

Không nên sử dụng XMLHttpRequest đồng bộ (async = false) vì JavaScript sẽ ngừng thực thi cho đến khi phản hồi của máy chủ sẵn sàng. Nếu máy chủ bận hoặc chậm, ứng dụng sẽ bị treo hoặc dừng.


NHẬN hay ĐĂNG?

GETđơn giản hơn và nhanh hơn POSTvà có thể được sử dụng trong hầu hết các trường hợp.

Tuy nhiên, luôn sử dụng yêu cầu ĐĂNG khi:

  • Tệp được lưu trong bộ nhớ cache không phải là một tùy chọn (cập nhật tệp hoặc cơ sở dữ liệu trên máy chủ).
  • Gửi một lượng lớn dữ liệu đến máy chủ (POST không có giới hạn về kích thước).
  • Gửi thông tin đầu vào của người dùng (có thể chứa các ký tự không xác định), POST mạnh mẽ và an toàn hơn GET.

NHẬN Yêu cầu

Một GETyêu cầu đơn giản:

Thí dụ

xhttp.open("GET", "demo_get.asp");
xhttp.send();

Trong ví dụ trên, bạn có thể nhận được một kết quả được lưu trong bộ nhớ cache. Để tránh điều này, hãy thêm một ID duy nhất vào URL:

Thí dụ

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

Nếu bạn muốn gửi thông tin bằng GETphương thức này, hãy thêm thông tin vào URL:

Thí dụ

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

Cách máy chủ sử dụng đầu vào và cách máy chủ phản hồi một yêu cầu, sẽ được giải thích trong chương sau.



ĐĂNG yêu cầu

Một POSTyêu cầu đơn giản:

Thí dụ

xhttp.open("POST", "demo_post.asp");
xhttp.send();

Để ĐĂNG dữ liệu như biểu mẫu HTML, hãy thêm tiêu đề HTTP với setRequestHeader(). Chỉ định dữ liệu bạn muốn gửi trong send()phương thức:

Thí dụ

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

Yêu cầu đồng bộ

Để thực hiện một yêu cầu đồng bộ, hãy thay đổi tham số thứ ba trong open()phương thức thành false:

xhttp.open("GET", "ajax_info.txt", false);

Đôi khi async = false được sử dụng để kiểm tra nhanh. Bạn cũng sẽ tìm thấy các yêu cầu đồng bộ trong mã JavaScript cũ hơn.

Vì mã sẽ đợi máy chủ hoàn thành nên không cần onreadystatechange hàm:

Thí dụ

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

Không nên sử dụng XMLHttpRequest đồng bộ (async = false) vì JavaScript sẽ ngừng thực thi cho đến khi phản hồi của máy chủ sẵn sàng. Nếu máy chủ bận hoặc chậm, ứng dụng sẽ bị treo hoặc dừng.

Các công cụ dành cho nhà phát triển hiện đại được khuyến khích để cảnh báo về việc sử dụng các yêu cầu đồng bộ và có thể đưa ra ngoại lệ InvalidAccessError khi nó xảy ra.