ajax调用重新加载页面而不调用回调函数

时间:2013-11-15 23:24:26

标签: javascript ajax

我搜索并看到很多人提出类似的问题,但没有人回答/帮助我解决问题。

以下是我用来执行ajax调用的js代码。帖子工作,当我使用firebug通过代码时,我可以在响应中看到返回消息。但是没有调用回调函数。运行测试行并重新加载页面。 我错过了什么让回调功能工作和页面不刷新? 也看着firebug,我可以在this.xmlhttp下看到:onreadystatechange = callback();

以下是代码:

function testajax() {
    params = 'action=testing';
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("POST", "afs_controller", true);
    xmlhttp.onreadystatechange = callBack;
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(params);
    //just test line;
    msg = 'testing;';
}

function callBack() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        handleReturn(xmlhttp.responseText);
    } else {
        failedCallBack(xmlhttp.responseText);
    }
}

function handleReturn(responseText) {
    document.getElementByID(displayDiv).innerHTML = responseText;
    document.getElementByID(displayDiv).style.display = 'block';
}

function failedCallBack(responseText) {
    var msg;
    msg = responseText;
    msg = msg + ' here';
    //handle here;
}

2 个答案:

答案 0 :(得分:0)

我的帖子中没有提到JAVA,显示的所有代码都是javascript。

我没有发布JAVA代码,不应该需要。我收到的回复很好。 使用firebug,我可以看到send()之后的readystate更改,并且可以在firebug的控制台中看到返回的文本。

不确定为什么你感到困惑。也许你应该重新阅读这篇文章。

答案 1 :(得分:0)

创建了fiddle,效果很好。所以不确定你身边出了什么问题。

另一件事:尝试在使用之前定义变量:

function testajax() {
    var params = 'action=testing';
    var xmlhttp;
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("POST", "/echo/json", true);
    xmlhttp.onreadystatechange = callBack;
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(params);
}

XMLHttpRequest的优秀示例页面:http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

只是问:为什么不使用jQuery

示例:

$.ajax({
    type: 'POST',
    url: 'afs_controller',
    data: { 
        'action': 'testing'
    },
    success: handleReturn,
    error: failedCallBack
});