Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax在firefox中无法正常工作而没有警报_Javascript_Html_Ajax_Firefox - Fatal编程技术网

Javascript Ajax在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

这段代码在IE、Safari和Firefox上运行良好,但是如果我删除了
警报
,那么这段代码在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)
        }
}