javascript - Ajax 在没有警报的情况下无法在 Firefox 中工作

标签 javascript html ajax firefox

function processAjaxStateChangeForRowAdd() {
    alert(0);
    if (req.readyState == 4) { // Complete
        if (req.status == 200) { // OK response
            processForRowAdd(req.responseText);
        } else {
            alert("Problem: " + req.statusText);
        }
    }
}

此代码在 IE、Safari 和 Firefox 中运行良好,但如果我删除警报,则该代码将无法在 Firefox 中运行,但在 IE 和 Safari 中仍然可以运行。

任何人都可以给我建议,为什么它不能在没有警报的情况下在 Firefox 中运行?

<小时/>

编辑:添加行的代码:

if (window.XMLHttpRequest && browserVersion.indexOf("Microsoft") == -1 ) {
    // code for Firefox, Chrome, Opera, Safari
    req = new XMLHttpRequest("");
    if (req) {
        ajaxProcessed = false;
        req.onreadystatechange = processAjaxStateChangeForRowAdd;
        req.open("POST", url, true);
        req.send();
        // alert("1");
    }
}

最佳答案

警报被阻止。这意味着您的脚本暂时挂起(即使只是几毫秒)。在此期间,您的 AJAX 请求完成并且您的 req 对象正在设置。您可以向回调添加延迟(使用 setTimeout)来验证这一点。

我建议您发布更多脚本,以便我们可以帮助您正确设置回调。或者,使用诸如 jQuery 之类的库以跨浏览器的方式轻松设置 AJAX 调用。

<小时/>

编辑:您需要将req声明为全局变量,或使用匿名函数。以下代码演示了第一种方法(使用全局变量):

var req;
if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    if (req) {
        req.onreadystatechange = processAjaxStateChangeForRowAdd;
        req.open("POST", url, true);
        req.send();
    }
}

function processAjaxStateChangeForRowAdd() {
    if (req.readyState == 4) { // Complete
        if (req.status == 200) { // OK response
            processForRowAdd(req.responseText);
        } else {
            alert("Problem: " + req.statusText);
        }
    }
}

关于javascript - Ajax 在没有警报的情况下无法在 Firefox 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793360/

相关文章:

javascript - 使用来自ajax的knockout.js/mappingplugin/koExternal模板引擎/json进行条件绑定(bind)

javascript - Chart.js - 鼠标悬停导致图形闪烁和调整大小

javascript - 在纯 JavaScript 中实现 FadeOut/FadeIn

javascript - 如何解决 Antd 不支持 URL 的问题

html - Bootstrap 4 .sticky-top 对 thead 的更改

php - jquery.post 不创建 session

javascript - 使用 JavaScript for IE 在本地读取 CSV 文件,无需 FileReader API

html - 创建 css 聊天气泡时可见的线

javascript - 有可能用 CSS 得到真实的英寸吗?

jquery - 使用 jQuery 序列化将值放入使用 AJAX 的数据库选择查询中