Ajax 调用重新加载页面,而不是调用回调函数

ajax call reloading page and not calling callback function

本文关键字:调用 回调 函数 新加载 Ajax 加载      更新时间:2023-09-26

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

下面是我用来执行 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;
}

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

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

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

创建了一个工作正常的小提琴。所以不确定你这边出了什么问题。

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

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
});