Javascript Ajax请求在Firefox操作系统中不起作用

Javascript Ajax请求在Firefox操作系统中不起作用,javascript,ajax,firefox-os,Javascript,Ajax,Firefox Os,我在save按钮的onclick事件上调用这个函数abc 我想上传音频文件,为此我使用了一个带有javascript的Ajax请求 但在这里,我得到了req.onreadystatechange之前的控制台MSG 我的控件不在这个req.onreadystatechange.function内 有人能告诉我为什么会发生这种情况,以及如何解决这个问题吗 我在控制台中没有收到任何类型的错误。它在任何浏览器中都不起作用。我认为您没有定义getXMLHTTP 您可以这样定义它: function abc

我在save按钮的onclick事件上调用这个函数abc

我想上传音频文件,为此我使用了一个带有javascript的Ajax请求

但在这里,我得到了req.onreadystatechange之前的控制台MSG

我的控件不在这个req.onreadystatechange.function内

有人能告诉我为什么会发生这种情况,以及如何解决这个问题吗


我在控制台中没有收到任何类型的错误。

它在任何浏览器中都不起作用。我认为您没有定义getXMLHTTP

您可以这样定义它:

function abc()
{
    console.warn("inside abc");
    var req = getXMLHTTP();
    console.warn("value of req" + req);
    if (req) {
        console.warn("inside if req");
        req.onreadystatechange = function() {
            console.warn("inside onreadychange");
            if (req.readyState == 4) {
                // only if "OK"
                if (req.status == 200) {
                    var x = req.responseText;
                } else {
                    alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                }
            }
        };
        req.open("GET", "upload1.php" + queryString, true);
        req.send(null);
    }       
}
检查这把小提琴:

不过,您可以替换查询字符串。我刚刚给出了一些字符串用于测试


附言:关于Firefox操作系统,我想你指的是Firefox浏览器

你正在构建一个打包的Firefox操作系统应用程序吗?默认情况下,不允许跨源请求。你有几个选择

更改为type:web,以便您的应用程序不必遵守CSP内容安全策略

在API端点上启用CORS,以便所有域都可以向其发出跨源请求。这对于您的应用程序来说可能不够安全

将打包的应用程序转换为具有systemXHR权限的type:privileged。这将允许你的应用程序进行跨源请求,但让你的应用程序进入Firefox市场可能需要更多的审查。解释如下:


它在浏览器中工作吗?您在哪里创建了新的XMLHttpRequest?你能发布你的getXMLHTTP吗?是的,我创建了与下面定义相同的函数,它返回xmlhttp变量。我在fire fox os移动设备上工作。是的,我创建了与你定义相同的函数,它返回xmlhttp变量。我在fire fox os移动设备上工作。请看这里,我正在上传我的全部代码。我正在创建一个应用程序,它将捕获音频文件并保存到fire fox os设备的SADCARD中,然后我想将此文件上传到一台服务器。为此,我使用ajax,但正如我提到的,我只停留在一个地方。
function getXMLHTTP() { //function to return the xml http object
    var xmlhttp=false;    
    try{
        xmlhttp=new XMLHttpRequest();
    }
    catch(e)    {        
        try{            
            xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e){
            try{
            req = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e1){
                xmlhttp=false;
            }
        }
    }

    return xmlhttp;
}