用$ .ajax PUT和GET

时间:2013-11-20 14:02:43

标签: jquery ajax mongodb

我尝试用$ .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;...
    }
})

2 个答案:

答案 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;...
        }
     })
}