我刚开始接触Javascript和移动网络编程。我不确定的一件事是我如何编写在任何浏览器上运行的正确代码,而不会让最终用户对其结尾有任何额外要求(使用什么浏览器)。
我在Google Chrome中编码,最近在c9.io中编码。
我认为这样可行:
function readTextFile(file)
{
var client = new XMLHttpRequest();
client.open('GET', file);
client.send();
client.onreadystatechange = function() {
alert(client.responseText);
}
}
但是我得到了XMLHTTpRequest未定义的错误。我一直在试图弄清楚为什么会这样,而且我一直在寻找不支持这种情况的不同浏览器。我认为简单的文件不会那么困难,但它给我带来了比我希望的更多麻烦。
输入文本文件的最佳方法是什么?这是一个没有写入任何内容的文本文件。只读。最终用户没有选择此文本文件,它应该是唯一的选择。
答案 0 :(得分:1)
代码中的顺序错误,send
方法应该是最后一个;否则,你的代码很好,它应该可以在所有现代浏览器中正常工作。提到的订单问题,或者可能是导致该错误的其他因素(之前)。下面的代码段还会将收到的文本拆分为文本行数组
var xhr, i, text, lines;
if(window.XMLHttpRequest){
// IE7+, Firefox, Chrome, Opera, Safari
xhr = new XMLHttpRequest();
}else{
// IE5, IE6 - next line supports these dinosaurs
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
text = xhr.responseText;
lines = text.split("\n");
for(i = 0; i < lines.length; i++){
console.log(lines[i]);
}
}
}
xhr.open('GET', 'http://domain/file.txt', true);
xhr.send();
答案 1 :(得分:0)
旧版浏览器不支持XMLHTTpRequest。尝试这样做也支持旧浏览器:
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}