【发布时间】:2011-02-17 22:41:30
【问题描述】:
在对话框中使用表单 我在 jsp 中使用 Dojo 将表单保存在我的数据库中。使用 dojo.xhrPost() 完成该请求后,我将发送另一个请求以更新下拉框,该下拉框应包含刚刚保存的添加的表单对象,但由于某种原因,更新下拉列表的请求在保存表单之前执行即使首先调用表单保存,在数据库中也是如此。使用 Firebug,我可以看到 getLocations() 请求在 sendForm() 请求之前完成。这是代码:
<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 中的缓存属性设置为 false,但结果仍然相同。
请帮忙!
【问题讨论】:
标签: javascript ajax jsp dojo