基础知识:我有一个HTML表格。我希望在不重新加载页面的情况下向表格中添加行。我创建了一个servlet,每当单击“添加”按钮时,它返回我要添加到表格中的值。
问题:我可以很好地动态添加行到表格中。问题是如何将数据从servlet中获取。这个servlet非常简单。发送三个值并返回一个JSON,其中包含新行的值。我已经测试过了,它工作得很好。问题是我用来保存值的变量在$.getJSON()函数设置好后不会传递到函数外。我对javascript没有太多经验,所以我不确定变量声明的优先级,但有一件事是肯定的,我的变量一旦内部函数完成就不再保留它们的值了。任何见解将不胜感激。
问题:我可以很好地动态添加行到表格中。问题是如何将数据从servlet中获取。这个servlet非常简单。发送三个值并返回一个JSON,其中包含新行的值。我已经测试过了,它工作得很好。问题是我用来保存值的变量在$.getJSON()函数设置好后不会传递到函数外。我对javascript没有太多经验,所以我不确定变量声明的优先级,但有一件事是肯定的,我的变量一旦内部函数完成就不再保留它们的值了。任何见解将不胜感激。
function addPerson()
{
var e = document.getElementById("newperson");
var personid = e.options[e.selectedIndex].value;
var roleid = e.options[e.selectedIndex].value;
var r = document.getElementById("newrole");
var roleid = r.options[r.selectedIndex].value;
var o = document.getElementById("thisorganizationid");
var orgid = o.options[o.selectedIndex].value;
var personName = "";
var orgName = "";
var roleName = "";
$.getJSON("GetPersonRole",{
personid: personid,
roleid: roleid,
orgid: orgid,
}, function(json) {
personName = json.Person;
orgName = json.Organization;
roleName = json.Role;
alert('person: ' + personName + ' role: ' + roleName); //They all display properly here
});
var table = document.getElementById("PersonTable");
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
cell1.innerHTML = orgName;
var cell2 = row.insertCell(1);
cell2.innerHTML = personName;
var cell3 = row.insertCell(2);
cell3.innerHTML = roleName;
var cell4 = row.insertCell(3);
cell4.innerHTML = "adding";
document.getElementById('addingPerson').innerHTML = addString;
}