0

我有一个简单的 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;

responseText json 转储按预期显示。例如:

["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()函数按预期工作并给出预期的警报输出。

任何关于我做错了什么的建议都将不胜感激。

4

0 回答 0