如果在vm.books中加载书籍详细信息后,如何确保“测试数据”文本在控制台中显示,基本上想要执行同步ajax调用。
下面提到的代码没有按预期工作。任何建议如何实现这种预期的功能。
$(document).ready(function() {
var vm = new obj.Books();
vm.loadBooks();
console.log("Test Data");
});
var obj = obj || {};
obj.Books = function() {
var self = this;
self.books = [];
self.loadBooks = function() {
$.ajax({
url: "somewebapiurl",
dataType: 'jsonp',
async: false
})
.done(function(data) {
$.each(data, function(idx, item) {
self.books.push(item);
});
})
.fail(function(xhr, status, error) {
alert(status);
});
};
};
答案 0 :(得分:1)
如何确保"测试数据"文本仅显示在控制台中 在vm.books中加载书籍细节之后,基本上想要执行 同步ajax调用。
只需利用jQuery Deferred Object的.done
函数。
self.loadBooks = function() {
$.ajax({
url: "somewebapiurl",
dataType: 'jsonp',
})
.done(function(data) {
$.each(data, function(idx, item) {
self.books.push(item);
});
//do what you want or call the function you want
console.log("Test Data");
})
.fail(function(xhr, status, error) {
alert(status);
});
};
答案 1 :(得分:0)
@jcubic是对的,jsonp不支持使用async = false进行同步调用。
因此,
现在它按预期工作了。