我正在尝试将文件上传到单击按钮时创建的 PHP 脚本。我才刚开始接触 JavaScript 的前几个小时,我真的不明白 JS v Dynamically Loading HTML 的结构,所以我来了。
单击菜单链接时,它会很好地从另一个文件加载 HTML。加载的 HTML 有一个带有禁用提交按钮的文件上传表单。当该按钮被点击时,我正在尝试向服务器执行 XMLHttpRequest 并上传该文件。我的第一次尝试,它找不到具有该 ID 的 DOM 元素,因为它尚未加载。因此,我将该函数移到了在单击菜单时加载 HTML 的函数中。现在,我没有收到 null 错误,但是当我单击按钮时没有任何反应?为什么提交按钮 onclick 事件没有触发?
加载的 HTML
<div id="form-wrapper">
<p>
Please upload a Material List.
</p>
</br>
</br>
<form id="form" method="post" action="#" enctype="multipart/form-data">
<p>
<label class="label" for="file">Material List</label>
<input class="file-input" type="file" name="file" id="file"/>
</p>
</br>
</br>
<p>
<input id="submit" value="Upload File" disabled="disabled" type="submit"/>
</p>
</form>
</div>
这是加载该 HTML 并且应该设置 onclick 侦听器的 JavaScript...
$(document).on("click","#mrp-new",function(e){
$("#container").load("../html/mrp_new_order.html");
$(document).on("click","#submit",function(e)
{
var file = this.files[0];
var fd = new FormData();
fd.append("file", file);
var xhr = new XMLHttpRequest();
xhr.open('POST', '../php/mrp_upload.php', true);
xhr.upload.onprogress = function(e)
{
if (e.lengthComputable)
{
var percentComplete = (e.loaded / e.total) * 100;
console.log(percentComplete + '% uploaded');
}
};
xhr.onload = function()
{
if (this.status == 200)
{
var resp = JSON.parse(this.response);
alert('Server got:', resp);
/*var image = document.createElement('img');
image.src = resp.dataUrl;
document.body.appendChild(image);*/
};
};
xhr.send(fd);
}, false);
});
提前感谢您的帮助!
弥敦道