我在更新代理配置文件表单上有一个下拉列表,用户可以在其中选择一个项目,在数据库中称为“主”。但是,如果他们选择“创建新母版”项,则可以在空白文本字段中输入一个值,然后单击相应的按钮。这会将数据库中的“ Create New Master”值更新为输入的值,并在数据库中创建一个新值作为“ Create New Master”值。这还将更新数据库中的代理表,以将新的主控器的ID保存到该表,从而更改以前的ID。所有数据库功能均有效,并且已进行所有更改。但是,我需要用新值重新加载表单。我该如何重新加载?我们使用spring和hibernate,但是此表单页面上的大多数功能都使用Javascript。
我尝试使用window.location.reload(true),但这不起作用。如果页面将用户踢出个人资料,然后用户手动重新输入同一座席的个人资料,则会显示更新的值,但这显然不理想。
function addMaster(obj){
//Create lots of relevant variables that are used for the database update.
if(newName == null || newName == ""){
alert("You have to enter a new name to add it.");
}
else{
var jsonURL = '${urlBase}/addMaster/' + newName + '/' + updated + '/' + updateID + '/' + created + '/' + createID + '/' + create + '/' + agentID + '.json?jsoncallback=?';
var xhttp = jQuery.getJSON(jsonURL, function(obj, textStatus){
});
window.location.reload(true);
}
}
这将调用另一个文件,该文件将相应且正确地更新数据库,但重新加载不会更改下拉列表中的新选择。它显示了旧版本,即使检查数据库显示它确实已更新。如何使当前数据库值反映在页面上,而不必让用户离开配置文件?
答案 0 :(得分:0)
方法jQuery.getJSON
是异步的,因此您可以在调用完成之前重新加载页面。请求完成后,您应该重新加载页面,以便执行以下操作:
function addMaster(obj){
//Create lots of relevant variables that are used for the database update.
if(newName == null || newName == ""){
alert("You have to enter a new name to add it.");
}
else{
var jsonURL = '${urlBase}/addMaster/' + newName + '/' + updated + '/' + updateID + '/' + created + '/' + createID + '/' + create + '/' + agentID + '.json?jsoncallback=?';
var xhttp = jQuery.getJSON(jsonURL, function(obj, textStatus){
//this is the success function.. asynch call is done
window.location.reload(true);
});
}
}