기본 사항 : HTML 표가 있습니다. 페이지를 다시로드하지 않고 표에 행을 추가하려고합니다. "추가"버튼을 클릭 할 때마다 테이블에 추가 할 값을 반환하는 서블릿을 만들었습니다.Javascript : JSON에서 데이터 가져 오기
문제 : 동적으로 표를 동적으로 추가 할 수 있습니다. 문제는 서블릿에서 데이터를 가져 오는 것입니다. 서블릿은 매우 간단합니다. 세 개의 값을 보내면 새 행의 값이있는 JSON이 반환됩니다. 나는 테스트를했으며 잘 작동합니다. 문제는 내가 값을 $ .getJSON()에 설정 한 함수를 넘기지 않는데 사용하는 변수이다. 자바 스크립트에 대한 많은 경험이 없으므로 변수 선언의 우선 순위를 정확히 알 수는 없지만 한 가지 확실한 점은 내 변수가 내부 함수가 완료되면 변수가 값을 유지하지 않는다는 것입니다. 모든 통찰력은 인정 될 것이다.
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을 제안합니다. –