У меня есть простой скрипт ajax, который возвращает дамп json с сервера:
var request = false;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}
function getIslandName() {
var islandGroup = document.getElementById("id_island_group").value;
var url = ".../find_island?island_group=" + escape(islandGroup);
request.open("GET", url, true);
request.onreadystatechange = updatePage;
request.send(null);
}
function updatePage() {
if (request.readyState == 4)
if (request.status == 200)
var data = JSON.decode(request.responseText);
update(data);
//document.getElementById("ajax_response").innerHTML = request.responseText;
else if (request.status == 404)
alert("Request URL does not exist");
else
alert("Error: status code is " + request.status);
}
function update(data) {
for (var key in data) {
alert(data[key]);
}
}
Проблема, похоже, в функции updatePage()
. Если я раскомментирую эту строку:
//document.getElementById("ajax_response").innerHTML = request.responseText;
ответный текст JSON-дамп отображается, как и ожидалось. e.g.:
["Foo Island", "Bar Island", "Darwin Island"]
Также, если я создам новый массив данных в функции updatePage()
следующим образом:
function updatePage() {
var string = "Something something ajax";
if (request.readyState == 4)
if (request.status == 200)
var data=new Array();
data[0]="Foo Island";
data[1]="Bar Island";
data[2]="Darwin Island";
update(data);
}
Функция update()
работает, как ожидается, и выдает ожидаемый вывод предупреждения.
Любые предложения относительно того, что я делаю неправильно, будут высоко оценены.