无法从服务器.txt文件中获取文件内容

问题描述 投票:0回答:1

我正在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();

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

我已经尝试过使用完全限定的位置(mFn)和相对位置(dog.txt),其中包含1行。两者都不起作用。我不知道相对位置解析到哪个目录。因此,我将副本放在服务器根目录和cgi-bin目录中。它不起作用。没有任何反应,也没有错误信息生成。

任何帮助将不胜感激。[craigt

javascript ajax dhtml
1个回答
-1
投票

我昨天在尝试使用W3(最简单的),jQuery和d3的JavaScript / ajax方法时看到的行为感到非常沮丧和困惑。我在要测试的5种浏览器(Chrome,Edge,FF,IE和Opera)中再次运行了这3种方法。

我经历过两次相同的行为和错误。这三种方法都做同样的事情。如果我在没有诊断(警报)的情况下运行,则这5种浏览器中的3种方法均无法运行。他们在拆分时失败并踢出控制台错误。

但是,如果我在ajax代码后放置警报,以打印从服务器返回的数据并打印出拆分数组的0位置,则数据字段未定义,数组位置包含应包含的内容,测试和错误该消息仅在FF和IE中可以正常工作,并且不会产生错误。其他3个浏览器在拆分时仍然失败。当FF和IE工作时,控制台包含行文件,Notebook ++告诉我,每行但最后一行以CRLF结尾。如果我删除警报,则这2个浏览器将失败,并且错误会再次出现。代码如下。

var fieldValue3;

var xhttp = new XMLHttpRequest(); // W3.
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    fieldValue3 = this.responseText;
  }
};
xhttp.open('GET', 'http://steepusa.no-ip.info/dog.txt', true);
xhttp.send();

\$.get({ // jQuery.
     url: 'http://steepusa.no-ip.info/dog.txt',
     success: function(response) {
       console.log(response);
       fieldValue3 = response;
     }
});

alert(fieldValue3);

fv3Arr = fieldValue3.split('\\r\\n'); // Create array.
alert(fv3Arr[0]);

fv3Len = fv3Arr.length;

有点奇怪。任何建议将不胜感激。同样,上面的javascript从Per / cgi程序中称为onchange。我在运行Apache和mod_perl的Windows 10平台上。操作系统,服务器技术,语言解释器和浏览器是当前版本。

ct

© www.soinside.com 2019 - 2024. All rights reserved.