Tôi có một chức năng phía máy chủ yêu cầu đăng nhập. Nếu người dùng đăng nhập vào chức năng sẽ trả về 1 thành công. Nếu không, hàm sẽ trả về trang đăng nhập.Làm cách nào để jQuery chờ một cuộc gọi Ajax kết thúc trước khi nó trở về?
Tôi muốn gọi hàm bằng cách sử dụng Ajax và jQuery. Những gì tôi làm là gửi yêu cầu bằng liên kết thông thường, với chức năng nhấp được áp dụng trên đó. Nếu người dùng không đăng nhập hoặc chức năng bị lỗi, tôi muốn lệnh gọi Ajax trả về true, để href kích hoạt.
Tuy nhiên, khi tôi sử dụng mã sau, hàm sẽ thoát trước khi thực hiện cuộc gọi Ajax.
Làm cách nào để chuyển hướng người dùng một cách duyên dáng đến trang đăng nhập?
$(".my_link").click(
function(){
$.ajax({
url: $(this).attr('href'),
type: 'GET',
cache: false,
timeout: 30000,
error: function(){
return true;
},
success: function(msg){
if (parseFloat(msg)){
return false;
} else {
return true;
}
}
});
});
Có thể là một chuỗi cũ, nhưng khi @kofifus chỉ ra cài đặt sync to false là một thiết kế tồi và "không timeouts etc sẽ được xử lý". Có thể thử giải pháp đơn giản này - https: // stackoverflow.com/a/11576418/6937841 – Shan