正在等待异步调用,无法使用ajax
Waiting on asynchronous call not working with ajax
我使用deferred来等待大约两个函数完成(它们提供模板并显示结果),然后再提供模板中的select。
当一个选项卡显示时,我会。
var notAssociateContact = getNotAssociateContact();
var associateContact = getAssociateContact();
$.when(notAssociateContact, associateContact).then(assignLocationToSelector($("select[name=locationIds''['']]")));
function getNotAssociateContact() {
var deferred = $.ajax({
type: "GET",
url: "http://localhost:8080/rest/contacts/notassociatedto/" + $("#lodgerId").val(),
success: function(data, status, jqXHR) {
$("#lodgerContactAvailableDivTemplate").empty();
if (data.length != 0) {
$("#lodgerContactAvailableDivTemplate").append(templateLodgerContactAvailable(data));
$('#lodgerContactAvailableTableResult').bootstrapTable();
}
},
error: function(jqXHR, status) {
// error handler
alert("error " + jqXHR + " - " + status);
}
}).then(function(response) {
// optional callback to handle this response
});
return deferred;
}
function getAssociateContact() {
var deferred = $.ajax({
type: "GET",
url: "http://localhost:8080/rest/lodgers/" + $("#lodgerId").val() + "/contacts",
success: function(data, status, jqXHR) {
$("#lodgerContactDivTemplate").empty();
if (data.length != 0) {
$("#lodgerContactDivTemplate").append(templateLodgerContact(data));
$('#lodgerContactTableResult').bootstrapTable();
// $('#lodgerContactTableResult tr').bind("dblclick", null, contactReferenceSelectedRow);
}
},
error: function(jqXHR, status) {
// error handler
alert("error " + jqXHR + " - " + status);
}
}).then(function(response) {
// optional callback to handle this response
});
return deferred;
}
我没有得到任何错误,但assignLocationToSelector与运行不一样。Select为空。
在控制台中,如果我运行
assignLocationToSelector($("select[name=locationIds''['']]"));
选择已正确馈送。
当我调试并到达$.When时,我看到两个ajax调用正在挂起。。。
所以延期似乎有问题。
您的$.when().then()
需要传递一个函数引用。您正在立即调用一个函数,然后传递返回结果。这会立即执行函数,而不允许$.when()
稍后调用它。
将您的$.when()
语句从以下内容更改为:
$.when(notAssociateContact, associateContact).then(assignLocationToSelector($("select[name=locationIds''['']]")));
到此:
$.when(notAssociateContact, associateContact).then(function() {
assignLocationToSelector($("select[name=locationIds''['']]"));
});
相关文章:
- 在等待ajax请求时显示微调器并禁用页面
- 通过rails中的Ajax在控制器B的每个视图中渲染控制器a的视图
- 在等待异步任务时永久循环
- ajax在输入等于null时进行检查
- Ajax在JQuery表单插件中不起作用
- 使用AJAX在剑道网格中分组时出现Javascript错误
- 使用ajax在多个页面上发布一篇文章
- 强制jQuery Deferred等待Ajax在“”中完成;那么“;处理程序
- 网页在等待 AJAX 响应时变为非活动状态
- Jquery ajax在获取页面之前等待
- $.ajax在不挂起UI的情况下等待完成
- jquery在等待ajax响应时加载gif
- Ajax在返回值之前等待响应
- JavaScript:如何在等待ajax响应时阻塞整个屏幕
- 在Javascript中,如何使用ajax调用等待一个函数完成,然后再继续使用另一个函数
- 如何判断一个可观察对象是否在“等待”另一个使用RxJS(例如,用于Ajax请求指示符)
- 在等待AJAX回调时更改image src:仅适用于Firefox
- Javascript函数在等待ajax响应时循环调用
- 窗口关闭后仍在等待ajax查询
- 使用while循环在等待AJAX响应时暂停javascript