重新加载时如何获取网页以重新访问数据库

时间:2019-05-13 20:30:35

标签: javascript jquery spring hibernate

有配置文件,每个配置文件可以有一个分配的“主”。每个主配置文件可以具有多个不同的配置文件(这是主配置文件的重点),每个配置文件可以不具有主配置文件,也可以只有一个。 我有两个字段:一个下拉菜单(由数据库填充)和一个文本字段。文本字段旁边有一个保存按钮。如果初始下拉菜单选择是菜单中的“主菜单”中的任何一个,则文本字段将自动填充该选择,以供用户编辑。如果他们更改了文本字段,即来自“ Master,Inc.”到“ Master,Incorporated”,然后单击按钮,它将更改数据库中的master名称,然后重新加载页面。新的主名称将为“ Master,Incorporated”。这就是我要的。但是,如果将下拉选择更改为初始选择以外的其他内容,然后对其进行了编辑并单击了按钮,则页面将重新加载并显示原始选择,然后再进行更改。但是,实际上,已分配的主数据库已在数据库中更改,这可以通过手动检入Oracle并离开页面然后手动重新访问页面来证明,在这种情况下它将最终更新。 同样,如果他们在下拉列表中选择“创建新母版”,则文本字段为空白,并且其行为会有所不同。他们可以输入一个新的主名称,然后单击按钮将在数据库中创建一个新条目,并将其分配给所选的配置文件。这有相同的问题:数据库会更新,但是除非您手动离开然后再次搜索配置文件,否则表单不会更改。 如果下拉选择为null,则按钮和文本字段均被禁用,这很好。

我已经尝试了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中的函数。

1 个答案:

答案 0 :(得分:0)

我认为您用数据库填充的下拉列表未在页面加载中呈现。您正在搜索页面或更早的阶段中填充下拉列表。尝试在要反映更改的页面中填充下拉菜单。