2013-11-20 80 views
0

我嘗試用$ .ajax重寫信息並在顯示屏上顯示全部信息。 這是關於來自MongoDB的PUT和GET信息。 首先,我在MongoDB中用$ .ajax做PUT表。 $ .ajax with PUT工作良好,因爲我看到,所有內容都是在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

運行Ajax的異步(這是其名稱的一部分)。這意味着撥打$.ajax的兩個電話可能無法按任何順序完成 - 或者完成。

如果您的代碼依賴於異步調用的結果,則所有依賴於調用的工作都需要在回調中爲ajax完成。 ajax完成後觸發回調。你可以使用success,或使用deferreds(內置):

$.ajax(putRequest).done(function() { 
    $.ajax(getRequest); 
}); 
+0

謝謝!!這是很好的解決方案! – toshkaexe

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;... 
     } 
    }) 
} 
+0

謝謝!這是偉大的解決方案! – toshkaexe