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/