Основы: У меня есть таблица HTML. Я хочу добавить строки в таблицу без перезагрузки страницы. Я создал сервлет, который возвращает значения, которые я хочу добавить в таблицу, когда нажимается кнопка «Добавить».Javascript: получение данных от JSON
Проблема: я могу динамически добавлять строки в таблицу просто отлично. Проблема заключается в получении данных из сервлета. Сервлет очень прост. Отправьте три значения и верните 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;
}
Он использует их в функции тоже форматирование было немного перепутались что сделало его похожим на то, что функция addPerson уже закончилась. – BNL
Это не исправится. Если вы посмотрите, вы увидите, что таблица обновляется до выполнения обратного вызова AJAX. – Jonathan
-1 для предложения глобальных переменных. –