麻烦的ajax请求响应处理程序

时间:2014-03-11 21:37:44

标签: javascript ajax

非常新的ajax并尝试使ajax请求函数可以重用。 Firebug说请求正在通过我的php文件返回正确的数据。但是,响应没有插入到我的html中的div中。这是我的代码:

function ajaxRequest(url, method, data, asynch, responseHandler)
{
    var request = new XMLHttpRequest();
    request.open(method, url, asynch);

    if (method == "POST"){
        request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    }
    request.onreadystatechange = function()
    {
        if (request.readyState == 4) {
            if (request.status == 200) {
                responseHandler(request.responseText);
            }
        }
    }

    request.send(data);
} 

function changeText() {
    var data = "";
    ajaxRequest("../PHP/CODE/changeText.php", "Get", data, true, insertNewText);
}

function insertNewText() {  
    var response = request.responseText;
    var testDiv = document.getElementById("rightColumn");
    testDiv.innerHTML = response;
} 

2 个答案:

答案 0 :(得分:1)

变化:

function insertNewText() {  
   var response = request.responseText;
   var testDiv = document.getElementById("rightColumn");
   testDiv.innerHTML = response;
} 

function insertNewText(html) {  
   var testDiv = document.getElementById("rightColumn");
   testDiv.innerHTML = html;
} 

答案 1 :(得分:0)

您使用insertNewText作为响应处理程序。

看看:

if (request.status == 200) {
    responseHandler(request.responseText);
}

在这段代码中,responseHandler是函数回调,在你的上下文中,这是insertNewText

你可以在

中看到

responseHandler(request.responseText); 

将responseText传递给它

但是在insertNewText签名中,你不处理这个

总结:

function insertNewText() {  
    var response = request.responseText;
    var testDiv = document.getElementById("rightColumn");
    testDiv.innerHTML = response;
} 

应该是:

function insertNewText(response) {  
    var testDiv = document.getElementById("rightColumn");
    testDiv.innerHTML = response;
} 

瞧!