使用Ajax javascript加载时,文本文件变回空白

时间:2015-11-24 21:23:42

标签: javascript ajax text-files

我搜索过并搜索过,找不到解决方法: 我正在尝试使用Ajax加载.txt文件内容,但文件返回空。 我检查了准备状态和状态。就绪状态为4表示已设置连接,接收数据,状态为0表示加载http时出错,但我在论坛上读到可以使用本地文件。 我真的不知道该怎么办。 所有帮助将不胜感激! 这是我的代码:

<script>    
    function load() {
        var selectedValue = document.getElementById("mySelect").value;
        var xhttp;

        alert("in func")

        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            try{
                xhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e){
                try{
                    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(e){

                }
            }
        }

        xhttp.onreadystatechange = function() {
            if (xhttp.readyState == 4 && (xhttp.status == 200 || xhttp.status == 0)) {
                document.getElementById("textDiv").innerHTML = xhttp.responseText;
                alert(xhttp.responseText);
            }
        };

        if(selectedValue == "Year 1"){
             xhttp.open("GET", "file://year1.txt", true);
             xhttp.send(null);
        }

        if(selectedValue == "Year 2"){
            xhttp.open("GET", "year2.txt", true);
            xhttp.send(null);
        }

        if(selectedValue == "Year 3"){
            xhttp.open("GET", "year3.txt", true);
            xhttp.send(null);
        }
    }
</script>

3 个答案:

答案 0 :(得分:0)

问题很可能是文件协议:file://year1.txt

尝试使用相对路径,即./year1.txt

修改..

我第一次错过了这个...你会在成功的通话中获得几次点击回调功能。您将获得一个状态为零的地方,然后如果成功,您将获得另一个具有200的地方。为什么要检查两者?

改变这个......

if (xhttp.readyState == 4 && (xhttp.status==200 || xhttp.status==0)) 

到此......

if (xhttp.readyState == 4 && xhttp.status==200) 

答案 1 :(得分:0)

OK!在进行大量研究之后,问题是臭名昭着的跨域请求问题(不允许访问本地文件作为安全措施的一部分,以确保您不上传受感染的文件&amp; ct) 解决方案是:

初始化XMLHttpRequest的变量时写:

 xhttp = new XMLHttpRequest({mozSystem: true});

(注意请求中的{mozSystem:true})

它解决了问题! 谢谢你的时间,我希望这有助于某人:)

答案 2 :(得分:0)

我之前的回答有效但不是很久 - 在我重新启动计算机后,ajax停止工作,开始再次抛出交叉原点错误。所以我发现的最佳选项也适用于我检查过的所有浏览器(chrome,IE),就是设置本地服务器并从那里运行它。

这是一个指示链接: https://www.maketecheasier.com/setup-local-web-server-all-platforms/

祝你好运!