Javascript Ajax在firefox中无法正常工作而没有警报
这段代码在IE、Safari和Firefox上运行良好,但是如果我删除了Javascript Ajax在firefox中无法正常工作而没有警报,javascript,html,ajax,firefox,Javascript,Html,Ajax,Firefox,这段代码在IE、Safari和Firefox上运行良好,但是如果我删除了警报,那么这段代码在Firefox中将无法工作,尽管它在IE和Safari中仍然可以工作 有谁能给我一个建议,为什么它不能在Firefox中运行而没有警报 编辑:添加行的代码: function processAjaxStateChangeForRowAdd() { alert(0); if (req.readyState == 4) { // Complete if (req.status
警报
,那么这段代码在Firefox中将无法工作,尽管它在IE和Safari中仍然可以工作
有谁能给我一个建议,为什么它不能在Firefox中运行而没有警报
编辑:添加行的代码:
function processAjaxStateChangeForRowAdd() {
alert(0);
if (req.readyState == 4) { // Complete
if (req.status == 200) { // OK response
processForRowAdd(req.responseText);
} else {
alert("Problem: " + req.statusText);
}
}
}
你能试试这个吗
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");
}
}
你能试试这个吗
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)来验证这一点
我建议您发布更多脚本,以便我们可以帮助您正确设置回调。或者,使用库(如)以跨浏览器的方式轻松设置AJAX调用
编辑:您需要将
req
声明为全局变量,或者使用匿名函数。以下代码演示了第一种方法(使用全局变量):
警报
被阻塞。这意味着您的脚本被暂时挂起(即使是几毫秒)。在此期间,AJAX请求完成,并且正在设置req
对象。您可以向回调添加延迟(使用setTimeout)来验证这一点
我建议您发布更多脚本,以便我们可以帮助您正确设置回调。或者,使用库(如)以跨浏览器的方式轻松设置AJAX调用
编辑:您需要将
req
声明为全局变量,或者使用匿名函数。以下代码演示了第一种方法(使用全局变量):
您还应该检查readyState,下面的代码可能会有所帮助
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);
}
}
}
读取readyState的不同值,您还应该检查readyState,以下代码可能会有所帮助
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);
}
}
}
req.onreadystatechange=function()
{
if (req.readyState==4 && req.status==200)
{
processForRowAdd(req.responseText)
}
}
读取readyState的不同值,它的警报是什么?哦,你是说第一个。您确实将此函数作为回调处理程序附加到了
XMLHttpRequest
,不是吗?正如Marcel所说。。。是否将此函数设置为回调函数?req.onreadystatechange=processAjaxStateChangeForRowAdd@Marcel Korpel谢谢,修复了它。它发出了什么警报?哦,你是说第一个。您确实将此函数作为回调处理程序附加到了XMLHttpRequest
,不是吗?正如Marcel所说。。。是否将此函数设置为回调函数?req.onreadystatechange=processAjaxStateChangeForRowAdd@Marcel Korpel,谢谢,修好了。这和他使用的条件一样。请不要推荐W3学校,请看原因。这与他使用的条件相同。请不要推荐W3Schools,请参阅了解原因。if(window.XMLHttpRequest&&browserVersion.indexOf(“Microsoft”)==-1){//Firefox、Chrome、Opera、Safari的代码req=new-XMLHttpRequest(“”);if(req){ajaxProcessed=false;req.onreadystatechange=processAjaxStateChangeForRowAdd;req.open(“POST”,url,true);req.send();//警报(“1”);}@旁白:哦,请不要在评论中发布代码;改为编辑您的问题(通过按问题底部附近的“编辑”链接)。如果(window.XMLHttpRequest&&browserVersion.indexOf(“Microsoft”)==-1){//Firefox、Chrome、Opera、Safari req的代码=新的XMLHttpRequest(“”);if(req){ajaxProcessed=false;req.onreadystatechange=processAjaxStateChangeForRowAdd;req.open(“POST”,url,true);req.send();//警报(“1”);}@Asit:哦,请不要在评论中发布代码;改为编辑您的问题(通过按问题底部附近的“编辑”链接)。函数processForRowAdd(responseText){if(responseText!=null | | responseText.length!=0){document.getElementById(targetElementId).value=responseText;}ajaxProcessed=true;}if(window.XMLHttpRequest&&browserVersion.indexOf(“Microsoft”)==-1){//Firefox、Chrome、Opera、Safari的代码req=new-XMLHttpRequest(“”);if(req){ajaxProcessed=false;req.onreadystatechange=processAjaxStateChangeForRowAdd;req.open(“POST”,url,true);req.send();//警报(“1”);}}函数processForRowAdd(responseText){if(responseText!=null | | responseText.length!=0){document.getElementById(targetElementId).value=responseText;}ajaxProcessed=true;}if(window.XMLHttpRequest&&browserVersion.indexOf(“Microsoft”)==-1){//Firefox、Chrome、Opera、Safari的代码req=new XMLHttpRequest(“”);如果(req){ajaxProcessed=false;req.onreadystatechange=processAjaxStateChangeForRowAdd;req.open(“POST”,url,true);req.send();//警报(“1”);}
req.onreadystatechange=function()
{
if (req.readyState==4 && req.status==200)
{
processForRowAdd(req.responseText)
}
}