我尝试用$ .ajax重写信息并在显示屏上显示所有信息。 它是关于MongoDB的PUT和GET信息。 首先,我在MongoDB中使用$ .ajax对表进行PUT colunms。 带有PUT的$ .ajax很好用,因为我看到,所有都是在MongoDB中编辑的。 在此操作之后,我想从数据库中获取信息。在这里,我失败了。 我不明白,为什么在PUT之后我得不到数据库中的实际信息。
$.ajax({
url: VASERVER_API_LOC + '/visualization/' + visid + '/',
contentType: 'application/json',
data: JSON.stringify(features),
type: 'PUT',
success: function (data) {
}
});
$.ajax({
url: VASERVER_API_LOC + '/visualization/' + visid + '/',
type: 'GET',
contentType: "application/json",
data: tmp_object,
success: function (tmp_object) {
var features = tmp_object.features;...
}
})
答案 0 :(得分:0)
Ajax以异步方式运行 (这是其名称的一部分)。这意味着对$.ajax
的两次调用可能无法以任何顺序完成 - 或者永远完成。
如果您的代码依赖于异步调用的结果,那么依赖于调用的所有工作都需要在ajax的回调中完成。在ajax完成后触发回调。您可以使用success
,或使用延迟(内置):
$.ajax(putRequest).done(function () {
$.ajax(getRequest);
});
答案 1 :(得分:0)
AJAX是异步,因此第二次AJAX调用在PUT
完成之前运行,将其包装在一个函数中,并从第一个success
调用它:
$.ajax({
url: VASERVER_API_LOC + '/visualization/' + visid + '/',
contentType: 'application/json',
data: JSON.stringify(features),
type: 'PUT',
success: function (data) {
getData();
}
});
function getData() {
$.ajax({
url: VASERVER_API_LOC + '/visualization/' + visid + '/',
type: 'GET',
contentType: "application/json",
data: tmp_object,
success: function (tmp_object) {
var features = tmp_object.features;...
}
})
}