Я работаю над приложением jsp / servlet / ajax.
Я использую XMLHttpRequest для передачи значений со страницы jsp сервлету, который извлекает данные из базы данных и возвращает XML в jsp.
Код работает, но есть одна вещь, которую я не понимаю.
Вот часть JSP
<body>
<label>Longitude</label><input type="text" id ="lat" value="40.799559" />
<br />
<label>Latitude</label><input type="text" id="lon" value="-74.481386" />
<br />
<br />
<input type="button" onclick="checkGPSCoords(document)" value="Test" />
<br/><br/>
<input type="text" id ="dbCounty" readonly/>
<br/>
<input type="text" id ="dbMuni" readonly />
<br/>
<br />
</body>
Я передаю элемент документа в JavaScript
Вот скрипт:
<script type="text/javascript" language="JavaScript">
var req;
var isIE;
function initRequest(){
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
isIE = true;
req = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function checkGPSCoords(currentWindow){
var lat= currentWindow.getElementById("lat").value;
var lon = document.getElementById("lon").value;
//alert("lon:" + lon);
initRequest();
req.open("GET","./lonlat?lat="+ lat + "&lon=" + lon);
req.onreadystatechange = retrieveMuniCntyNames;
req.send(null);
}
function retrieveMuniCntyNames()
{
var muniAndCnty;
if (req.readyState==4)
{
if(req.status==200)
{
var XMLresult = req.responseXML;
muniAndCnty = XMLresult.getElementsByTagName("rec");
//incoming from Servlet <twp><rec twp='Morristown town' cnty='Morris' /></twp>
var c = document.getElementById("dbCounty");
var t = document.getElementById("dbMuni")
c.setAttribute("value",muniAndCnty[0].getAttribute("cnty") )
t.setAttribute("value",muniAndCnty[0].getAttribute("municipality") )
} }}</script>
Функция checkGPSCoords знает имя документа (которое является моим именем файла jsp).
Что меня удивляет, так это то, что функция обратного вызова retrieveMuniCntyNames () также знает имя документа, поскольку безошибочно устанавливает атрибуты для элементов ввода в jsp.
Я проверил это клопом.
Буду признателен за любые мысли по этому вопросу.
Спасибо,
Chris