Lần đầu tiên một người dùng truy cập vào trang web của tôi, tôi đang lấy rất nhiều thông tin từ nhiều nguồn khác nhau bằng cách sử dụng một vài cuộc gọi ajax. Làm cách nào để tải lại trang khi các cuộc gọi ajax được thực hiện?Làm cách nào để tải lại trang sau khi tất cả các cuộc gọi ajax hoàn tất?
if(userVisit != 1) {
// First time visitor
populateData();
}
function populateData() {
$.ajax({
url: "server.php",
data: "action=prepare&myid=" + id,
dataType: "json",
success: function(json) {
if(json.error) {
return;
}
_id = response[json].id;
getInformation(_id);
}
});
}
function getInformation(id) {
$.ajax({
url: "REMOTESERVICE",
data: "action=get&id=" + id,
dataType: "json",
success: function(json) {
if(json.error) {
return;
}
$.ajax({
url: "server.php",
data: "action=update&myid=" + id + '&data=' + json.data.toString(),
dataType: "json",
success: function(json) {
if(json.error) {
return;
}
}
});
}
});
}
Vì vậy, những gì các mã này là, nó được một danh sách các định danh được xác định trước cho một người dùng mới (populateData
chức năng) và sử dụng chúng để lấy thêm thông tin từ một dịch vụ thirdparty (getInformation
chức năng). Hàm getInformation
này truy vấn một máy chủ của bên thứ ba và khi máy chủ trả về một số dữ liệu, nó sẽ gửi dữ liệu đó đến máy chủ của tôi thông qua một cuộc gọi ajax khác. Bây giờ những gì tôi cần là một cách để tìm ra khi tất cả các cuộc gọi ajax đã được hoàn thành để tôi có thể tải lại trang. Bất kỳ đề xuất?
Cảm ơn. Nhưng nếu một số cuộc gọi ajax đến máy chủ của tôi bên trong cuộc gọi lại 'success' trong hàm' getInformation' vẫn đang chờ xử lý thì sao? Điều này sẽ không làm mới trang mà không xem xét điều đó? Hay tôi đang thiếu một cái gì đó? – Legend
@Legend - Có, nếu bạn muốn trì hoãn cho đến khi chúng được thực hiện xong, chỉ cần làm '$ (document) .ajaxStop (function() {location.reload (true);});' và nó sẽ thực thi khi tất cả những yêu cầu đó hoàn thành. –
Điều đó hoàn toàn hợp lý nhưng vì một số lý do, khi tôi chèn cuộc gọi này, trang luôn làm mới mọi lúc. – Legend