我尝试在我的项目中运行FileReader函数,最终出现此错误,我不明白:

时间:2016-02-11 01:25:41

标签: javascript ajax xml

我必须用AJAX做练习。我必须使用我在本地放在我的电脑上的本地文件,我的程序要求选择这个文件。文件名是“ledevoir.xml”。

当我执行我的程序时,通过选择我的本地文件ledevoir.xml,我收到了这个错误:

  

无法在'FileReader'上执行'readAsText':参数1不是'Blob'类型。

这是我的代码:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>

    <title>Exemple AJAX</title>

    <script language="JavaScript">
    function afficheTitres(doc) {
         titres = doc.getElementsByTagName("title");
         elementol = document.createElement("ol");
         var longueur = titres.length;
         for ( k = 0; k &lt; longueur ; ++k) {
           elementli = document.createElement("li");
           elementli.appendChild(document.createTextNode(titres[k].firstChild.nodeValue));
           elementol.appendChild(elementli);
         }
         body = document.getElementsByTagName("body").item(0);
         body.appendChild(elementol);
    }

    function chargeDocument(f) {
            var fileReader = new FileReader();
            fileReader.onload = function(evt) {
               var doc = new DOMParser().parseFromString(this.result, 'application/xml');
               afficheTitres(doc);
            }
            fileReader.readAsText(f);
    }

    </script>
    </head>
    <body>
      <p>Récupère et affiche
      les nouvelles du devoir: </p>
    <input type="file" onchange="chargeDocument(this.files)" ></input>

    </body>
    </html>

我不明白我得到的错误。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

你打电话

chargeDocument(this.files)

传递所选文件,因此f中的参数function chargeDocument(f)是一个数组,而不是一个文件。该错误只是说数组没有函数readAsText

而只是传递文件数组的第一个条目:

<input type="file" onchange="chargeDocument(this.files[0])"></input>