我必须用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 < 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>
我不明白我得到的错误。你能帮帮我吗?
答案 0 :(得分:0)
你打电话
chargeDocument(this.files)
传递所选文件,因此f
中的参数function chargeDocument(f)
是一个数组,而不是一个文件。该错误只是说数组没有函数readAsText
。
而只是传递文件数组的第一个条目:
<input type="file" onchange="chargeDocument(this.files[0])"></input>