Tôi có một hàm javascript yêu cầu một số dữ liệu ajax và lấy lại một đối tượng JSON. Sau đó, nó sẽ trả về đối tượng.Jquery: chờ gọi lại trước khi trở về
Vấn đề là tôi không biết cách làm cho hàm trả về từ cuộc gọi lại Ajax. Tất nhiên
myFunction: function() {
$.get(myUrl, function(data) {
return data;
});
}
không hoạt động, vì hàm bên trong đang trở về thay vì bên ngoài.
Mặt khác thực hiện những gì tôi cần ngay bên trong cuộc gọi lại sẽ phá vỡ phân đoạn MVC của tôi: mã này nằm trong một mô hình và tôi muốn sử dụng đối tượng kết quả trong bộ điều khiển.
Một cách giải quyết tạm thời là
myFunction: function() {
var result = $.ajax({
url: myUrl,
async: true,
dataType: 'text'
}).responseText;
return eval(result);
}
trong đó có những bất lợi của chặn trình duyệt trong khi chờ đợi câu trả lời (và sử dụng eval, mà tôi muốn tránh).
Có giải pháp nào khác không?
Điều này đã được hỏi nhiều lần ... Xem ví dụ: http://stackoverflow.com/questions/31129/how-can-i-return-a-variable-from-a-getjson-function – Shog9