Tôi đang làm việc trên một ứng dụng web và tôi cần tải một vài tệp $ .ajax. Tôi tìm thấy một cái gì đó thú vị trong $ .when(). Sau đó().Ai đó có thể giải thích rõ ràng jQuery.when() và deferred.then() hoạt động như thế nào?
Nó hoạt động tuyệt vời khi tôi không có bất cứ điều gì đặc biệt để làm với các dữ liệu trả về bởi các yêu cầu như ví dụ sau:
$.when(
$.getScript('js/script1.js'),
$.getScript('js/script2.js')
).then(function(){
// Do whatever I want once both scripts are loaded...
});
Nếu hoạt động tốt khi tôi có một yêu cầu ajax đơn như thế này:
$.when(
$.ajax('xml/myxml.xml')
).then(function(data){
// Here I can work with data like I would with a regular ajax request
alert($(data).find('mynode').text());
})
Nhưng nếu tôi cố gắng những điều sau đây, tôi không thể có được nó để làm việc:
$.when(
$.ajax('xml/myxml.xml'),
$.getScript('js/script.js')
).then(function(data){
// But here, I can't access $(data).find('mynode')...
})
tôi đọc 0.123.trang nhưng phần lớn quá kỹ thuật đối với tôi và tôi không thể hiểu được làm cách nào để có thể lấy dữ liệu ajax khi tôi sử dụng $ .when(). Then() để tải tập lệnh và dữ liệu từ nhiều nguồn.
Vì vậy, nếu ai đó có thể giúp tôi tìm hiểu cách sử dụng dữ liệu ajax của tôi trong trường hợp thử nghiệm ở trên, điều đó thật tuyệt! Và nếu trong khi đó ai đó có thể giải thích điều đối tượng trì hoãn theo cách dễ hiểu hơn tài liệu chính thức của jQuery, nó sẽ rất tuyệt vời!
Cảm ơn bạn!
Hãy thử kiểm tra các đối số được trả về bởi 'deferred.then' trong trường hợp đó. 'console.log (đối số)' vui lòng đăng kết quả. –
Xem ví dụ trên trang này: http://api.jquery.com/jQuery.when/ –
Phương thức 'then' của bạn nên chấp nhận hai đối số:' .then (hàm (a1, a2) {'.... 'a1' sẽ là kết quả của cuộc gọi ajax đầu tiên. 'a2' sẽ là kết quả của cuộc gọi getcript –