在對話框中使用表單我在jsp中使用Dojo將表單保存到數據庫中。在使用dojo.xhrPost()完成請求後,我發送另一個請求來更新下拉框,該框應包含剛剛保存的添加表單對象,但由於某種原因,在保存表單之前執行了更新下拉列表的請求在數據庫中,即使首先調用表單保存。使用Firebug我可以看到getLocations()請求在sendForm()請求之前完成。這是代碼:DOJO以何種順序處理Ajax請求?
<button type="button" id="submitAddTeamButton" dojoType="dijit.form.Button">Add Team
<script type="dojo/method" event="onClick" args="evt">
sendForm("ajaxResult1", "addTeamForm");
dijit.byId("addTeamDialog").hide();
getLocations("locationsTeam");
</script>
function sendForm(target, form){
var targetNode = dojo.byId(target);
var xhrArgs = {
form: form,
url: "ajax",
handleAs: "text",
load: function(data) {
targetNode.innerHTML = data;
},
error: function(error) {
targetNode.innerHTML = "An unexpected error occurred: " + error;
}
}
//Call the asynchronous xhrGet
var deferred = dojo.xhrPost(xhrArgs);
}
function getLocations(id) {
var targetNode = dojo.byId(id);
var xhrArgs = {
url: "ajax",
handleAs: "text",
content: {
location: "yes"
},
load: function(data) {
targetNode.innerHTML = data;
},
error: function(error) {
targetNode.innerHTML = "An unexpected error occurred: " + error;
}
}
//Call the asynchronous xhrGet
var deferred = dojo.xhrGet(xhrArgs);
}
爲什麼會發生這種情況?在第二次執行之前有辦法讓第一個請求完成嗎?
爲了減少這種情況發生的可能性,我嘗試將xhrGet中的cache屬性設置爲false,但結果仍然相同。
請幫忙!
好主意!這工作和簡化了我的代碼。 我現在將它作爲一個請求發送,並且使響應成爲更新的添加對象的下拉列表。 – mm2887 2010-05-11 16:48:09