【发布时间】:2019-09-30 20:04:59
【问题描述】:
有配置文件,每个配置文件都可以有一个分配的“主人”。每个主控可以有几个不同的配置文件(这是主控的全部要点),每个配置可以没有主控或只有一个。 我有两个字段:一个下拉菜单(由数据库填充)和一个文本字段。文本字段旁边有一个保存按钮。如果初始下拉菜单选择是菜单中的任何“主”,则文本字段会自动填充选择,供用户编辑。如果他们更改文本字段,即来自“Master, Inc.”到“Master, Incorporated”,然后点击按钮,它将更改数据库中的master名称,并重新加载页面。新的主名称将是“Master, Incorporated”。这就是我要的。但是,如果下拉选择更改为初始选择以外的内容,然后编辑该选项并单击按钮,则页面将重新加载并显示更改之前的原始选择。然而,分配的主服务器实际上已经在数据库中发生了变化,这可以通过手动签入 Oracle 以及离开页面然后手动重新访问它来证明,在这种情况下,它最终会更新。 同样,如果他们在下拉列表中选择“创建新主控”,则文本字段为空白,并且其行为略有不同。他们可以输入一个新的主名称,单击该按钮将在数据库中创建一个新条目,并将其分配给选定的配置文件。这有同样的问题:数据库更新,但除非您手动离开然后再次搜索配置文件,否则表单不会更改。 如果下拉选择为空,则按钮和文本字段都被禁用,这很好。
我试过 location.reload() 和 location.reload(true),但都没有任何效果。如果我在用户单击按钮后将用户从个人资料中踢出,当他们重新访问个人资料时,它会更新,但显然这不是我想要的。
function editMaster(){
var agentID = document.getElementById("agentID").value;
var updated = new Date();
updated = updated.toShortFormat();
var newName = document.getElementById("agentName").value;
var updateID = document.getElementById("agentDropdown").value
var jsonURL = "${urlBase}"+"/editMaster/" + newName + "/" + updated + "/" + updateID + "/" + agentID + ".json?jsoncallback=?";
var xhttp = jQuery.getJSON(jsonURL, function(obj, textStatus){
window.location.reload(true);
});
}
function addMaster(obj){
var agentID = document.getElementById("agentID").value;
var created = new Date();
created = created.toShortFormat();
var updated = created;
var updateID = document.getElementById("agentDropdown").value;
var createID = (parseInt(updateID, 10) + 1);
var newName = document.getElementById("agentName").value;
var create = " Create New Agent Master";
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);
});
}
}
这些都按预期工作,除了 window.location.reload(true);没有正确更新页面。如前所述,数据库确实会更新,但表单本身不会更新,除非页面完全离开然后重新访问。虽然用户可以简单地被踢回搜索页面并重新访问该页面,但这是不可接受的,我需要为用户消除该额外步骤。如果重要,数据库更新在与 jsp 不同的文件中完成。 RequestMapping 在控制器中完成,控制器分离所有变量并将它们传递给 ProfileDao.java 中的函数。
【问题讨论】:
标签: javascript jquery spring hibernate