将.txt文件加载到textarea Javascript中?

时间:2013-09-26 06:00:26

标签: javascript html

我试图将文本文件放入textarea。结果是“http://mywebsite.com/textfile/(txtinput).txt,文本文件未加载到textarea中。

<html>
   <head>
      <title>textbox</title>
      <script type="text/javascript">
         function readBOX() {
            var txtinput = document.getElementById('txtinput').value;
            document.forms[0].text.value = ("http://mywebsite.com/textfile/") + txtinput +(".txt");
         }
      </script>
   </head>
   <body>
      <p> Type</p>
      <input type="text" id="txtinput" />
      <input id="open" type="button" value="READ" onClick="readBOX()" />
      <form>
         <textarea name="text" rows="20" cols="70">loaded text here</textarea>
      </form>
   </body>
</html>

5 个答案:

答案 0 :(得分:12)

您必须使用this Answer

中张贴的内容

的jQuery

$(document).ready(function() {
   $("#open").click(function() {
       $.ajax({
           url : "helloworld.txt",
           dataType: "text",
           success : function (data) {
               $("#text").text(data);
           }
       });
   });
}); 

详细了解jQuery Documentation of .ajax()

非jQuery

我不想使用jQuery,你必须使用XMLHttpRequest - 这样的对象:

var xmlhttp, text;
xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', 'http://www.example.com/file.txt', false);
xmlhttp.send();
text = xmlhttp.responseText;

但这可以在SO-Answer hereWikipedia上的完整且可理解的文档中阅读

注意:但这不是跨浏览器兼容的,对于较旧的IE版本,您必须使用ActiveXObject("Microsoft.XMLHTTP")对象

答案 1 :(得分:2)

谢谢大家。 Javascript对我不起作用。我改为PHP,它运行得很好。

<!DOCTYPE HTML>
<html>
   <head>
      <title>textbox</title>
   </head>
   <body>
<form action="process.php" method="post">
      <input type="text" name="name" />
      <input type="submit" />
</form>
   </body>
</html>

Process.php

<textarea name="text" rows="20" cols="70"> 
<?php $name =  $_POST["name"]; echo file_get_contents("$name");?>
</textarea>

答案 2 :(得分:2)

这就是我将文本加载到textarea

的方法
UIActivityViewController

google textarea查找文本区域的格式

答案 3 :(得分:1)

最简单的方法之一是请求服务器返回预填充的textarea (这是使用PHP的示例):

<textarea name="text" rows="20" cols="70">
<?php
echo file_get_contents('yourFile.txt');
?>
</textarea>

注意:可以使用任何server-side scripting language进行类似的操作。

与此同时,如果您需要动态加载它,最好的办法是使用AJAX方法。选择哪种方法最适合您进行编码和维护。虽然jQuery是一种流行的方法,但您可以自由地使用任何您感觉舒适的东西,并且可能首先想要了解XmlHttpRequest

使用Pure JavaScript进行动态AJAX请求可能会非常棘手,因此请确保您的解决方案是跨浏览器的。一个常见的错误是直接使用XmlHtpRequest并且无法使其与旧的IE版本兼容,这会导致随机错误,具体取决于您使用的浏览器/版本。例如,它可能看起来像这样(需要在所有目标浏览器上进行测试,以便在需要时添加回退):

纯JS:

if (typeof XMLHttpRequest === "undefined") {
    XMLHttpRequest = function () {
        try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
        catch (e) {}
        try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
        catch (e) {}
        try { return new ActiveXObject("Microsoft.XMLHTTP"); }
        catch (e) {}
        throw new Error("This browser does not support XMLHttpRequest.");
    };
}

function readBOX() {
    function reqListener () {
        document.forms[0].text.value = this.responseText;
    }

    var txtinput = document.getElementById("txtinput").value;
    var filePath = "http://mywebsite.com/textfile/" + txtinput + ".txt";

    var oReq = new XMLHttpRequest();
    oReq.onload = reqListener;
    oReq.open("get", filePath, true);
    oReq.send();
}

但如果你不介意牺牲一些表演来确保最大程度的支持,你应该使用jQuery的实现:

<强> jQuery的:

function readBOX() {
    var txtinput = document.getElementById("txtinput").value;
    var filePath = "http://mywebsite.com/textfile/" + txtinput + ".txt";

    $.ajax({
        url: filePath
    }).done(function(data){
        document.forms[0].text.value = data;
    });
}

注意:jQuery的库有点大,但请记住,如果直接从谷歌服务器中包含它,你的用户很可能已将它放在缓存中。

希望这会有所帮助:)

答案 4 :(得分:0)

window.addEventListener('DOMContentLoaded', (e) => {
    let input = document.getElementById('input');
    
    // load default.txt into input box
    try {
        let fileToLoad = './default.txt';
        let xmlhttp = new XMLHttpRequest();
        xmlhttp.open('GET', fileToLoad, false);
        xmlhttp.send();
        input.innerHTML = xmlhttp.responseText;
    } catch(DOMException) {
        input.innerHTML = "Error loading file. Maybe related to filepath or CORS?";
    }
});