【问题标题】:can't get file content from server .txt file无法从服务器 .txt 文件中获取文件内容
【发布时间】:2020-06-26 06:34:01
【问题描述】:

我在 Windows 10 上使用 Apache/2.4.39 (Win64) 和 mod_perl/2.0.10 服务器在 dhtml(html5、CSS3、最新 JavaScript 和 Perl 5.26.3)中工作。我似乎没有能够让ajax工作。

我正在尝试从数据库位置“获取”一个多行文件(目录和文件名)。我在想响应文本将返回一串由行尾分隔的行(\n)。我尝试了 w3 最简单​​的方法、jquery 和 d3。 w3方法如下。

    var mFn = document.forms[0]['thefdir'].value + 'Measures/all.mea?t=' + Math.random(); // Unique ID bypasses cache.

    var xhttp = new XMLHttpRequest();
    xhttp.open('GET', 'dog.txt', true);
    xhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        fieldName3 = this.responseText;
      }
    };    
    xhttp.send();

它执行 onChange 到由 Perl CGI 程序生成的表单上的字段。 fieldName3.value 将在 JS 中进行下游处理。

我已经使用完全限定位置 (mFn) 和包含 1 行的相对位置 (dog.txt) 进行了尝试。都没有奏效。我不知道相对位置解析到哪个目录。所以我在服务器根目录和 cgi-bin 目录中放了一份副本。它不起作用。什么都没有发生,也没有生成错误信息。

任何帮助将不胜感激。 克雷格

【问题讨论】:

  • 在开发者工具中检查你的控制台和网络选项卡,你会看到问题,可能位置错误,404

标签: javascript ajax dhtml


【解决方案1】:

控制台和警报中的数据看起来像一个多行文件,其中每一行都以 CRLF 结尾,由 Notepad++ 验证。这就是服务器上的文件。

显然,对于异步请求,下游 javascript 在来自服务器的请求完成之前被执行。当我将其更改为同步请求时,它在所有 5 个浏览器中都可以正常工作。所以我必须 1) 能够让 JS 进程等到 onreadystatechange 分配完成或 2) 接受同步执行。看了几个注意事项2。文件小,活动非周期性且越来越少,同步效果会很短暂。你对 1 或 2 有什么看法。

感谢您与我合作。我很抱歉在我打开这个的时候打开它。我本来可以先做更多的。

【讨论】:

  • 将我所有的下游代码放在 onreadystatechange 函数中适用于异步请求。
猜你喜欢
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多