JavaScript:使用AJAX读取文本文件

3
无法让 AJAX 正常工作!我在网站上使用一个滚动字幕,已经能够正常运行!但是我想让它在文本文件中查找字幕的文本,并且读取文本文件中的文本(只有一行),并将其分配给名为 content 的变量,该变量是脚本标签中的全局变量。当我运行网站(本地 IIS)时,字幕文本是:“undefined”(不包括引号)。为什么没有将文本分配给变量 content 呢?
    var content

    function loadXMLDoc()
    {   
        var textfile;
        if (window.XMLHttpRequest)
        { 
            textfile = new XMLHttpRequest(); 
        }
        textfile.onreadystatechange = function ()
        {   
            if (textfile.readyState == 4 && textfile.status == 200)
            { 
                content = textfile.responseText; 
            }
        }
        textfile.open("GET", "C:\Users\Fares\Dropbox\Sync\College\Computing\DeltaOne\MarqueeText.txt", true);
        textfile.send();
    }

编辑:非常感谢 @kuncajs,他指出我忘记调用函数了! :) 已修复!感谢其他所有人!


感谢@BLSully对格式排版的贡献。 - Fares K. A.
2个回答

2
不要使用本地路径,如: C:\Users\Fares\Dropbox\Sync\College\Computing\DeltaOne\MarqueeText.txt 将其放置在您的IIS的www目录中,并像这样声明路径: localhost/text.txt 服务器可能对您的文件系统有限制访问,您应尝试使用相对路径 text.txt 或绝对路径 /text.txt,以便在部署到生产环境时路径也能正常工作。
编辑: 如果这没有帮助,请确保您真正调用了loadXMLDoc()函数。还要检查您所做的所有操作都是在AJAX结束后执行的!我的意思是,当您加载文本时,在if语句中进行了赋值,但您还应该在文本加载完成之后初始化您的跑马灯!如果您在此之前这样做,它将未定义。

嗨!谢谢@kuncajs!我按照你告诉我的做了,但不幸的是在跑马灯框中仍然显示“未定义”。我还尝试过删除“localhost/”,只保留文本文件名。该文本文件位于www的根目录中。 - Fares K. A.
好的,它对我有效:我已经使用 textfile.open("GET", "text.txt", true); 获取了文件 text.txt,该文件与我的带有 JS 的 html 文件位于同一目录下。你确定你的代码中真的调用了 loadXMLDoc() - 我的意思是执行该函数吗? - kuncajs
啊!你说得对 @kuncajs,我忘记调用这个函数了!现在它开始工作了,谢谢你万分!!! - Fares K. A.

0

首先尝试使用相对路径或绝对路径。

如果不行,请检查在使用浏览器时是否可以访问该文件(假设您的网站是 mysite.com/index.html,请尝试打开 mysite.com/text.txt

如果您无法使用浏览器访问它,则必须配置服务器以允许读取此文件,我从未尝试过IIS,因此无法为您提供帮助。

另外,由于您要求XHR异步执行,因此在变量填充之前可能需要一些时间(取决于您/您的服务器的速度)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接