删除自动提交 XMLHttpRequest
remove auto submit XMLHttpRequest
>我只是测试这个脚本并工作,但我不喜欢这个脚本中的自动提交样式,并尝试像往常一样删除/禁用自动提交和添加提交按钮,但没有工作。
<div id="div_data">
<h2>Upload file</h2>
<form id="myform" name="myform" method="POST" enctype="multipart/form-data">
<input type="file" name="file" placeholder="Select file"/>
<span id="status"></span>
</form>
<progress min="0" max="100" value="0">0% complete</progress><br/><span id="prosentase"></span><br/>
</div>
<div id="container"></div>
.
<script>
function uploadFiles(url, files) {
document.querySelector('#status').innerHTML = 'loading..'; //tambahkan loading text
var formData = new FormData(document.forms.namedItem("myform"));
for (var i = 0, file; file = files[i]; ++i) { //bisa kita gunakan untuk multiple files
formData.append(file.name, file);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.responseType = 'text'; //respondnya text
xhr.onload = function(e) {
if (this.status == 200) {
var text_ku = this.response;
var div = document.createElement('div');
div.innerHTML = text_ku;
//document.body.appendChild(div);
var container = document.querySelector('#container');
container.insertBefore(div, container.firstChild);
document.querySelector('#status').innerHTML = ''; //hilangkan loading text
}
};
// Listen to the upload progress.
var progressBar = document.querySelector('progress');
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
progressBar.value = (e.loaded / e.total) * 100;
progressBar.textContent = progressBar.value; // Fallback for unsupported browsers.
document.querySelector('#prosentase').innerHTML= progressBar.value+"%";
}
};
xhr.send(formData); // multipart/form-data
}
document.querySelector('input[type=file]').addEventListener('change', function(e) {
uploadFiles('http://example.com/upload.php', this.files);
}, false); // I have problem here
</script>
请帮我添加提交按钮。PS:对不起我的英语不好
您只需删除以下行即可
document.querySelector('input[type=file]').addEventListener('change', function(e) {
uploadFiles('http://example.com/upload.php', this.files);
}, false); // I have problem here
并在表单中添加提交按钮,如下所示
<input type="submit" name="Submit" onclick="uploadFiles('http://example.com/upload.php', this);" />
然后将方法的初始行更改为:
function uploadFiles(url, filedata) {
document.querySelector('#status').innerHTML = 'loading..'; //tambahkan loading text
var formData = new FormData(document.forms.namedItem("myform"));
files = filedata.files;
for (var i = 0, file; file = files[i]; ++i) { //bisa kita gunakan untuk multiple files
formData.append(file.name, file);
}
仅出于说明目的,尚未运行代码,但仅此而已。
问候
问题是您正在侦听change
事件。尝试:
- 侦听窗体调度的
submit
事件 - 向表单添加提交按钮。
像这样:
document.forms.namedItem("myform").addEventListener("submit",
function(e) {
uploadFiles(...);
}, false);
更多信息在这里:http://www.w3schools.com/jsref/event_onsubmit.asp
相关文章:
- XMLHttpRequest未返回值-状态202
- XMLHttpRequest在移动设备上的chrome上不起作用
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 检查xmlhttprequest问题的消息
- 主线程上的同步XMLHttpRequest已弃用
- 如何定期发出xmlhttprequest
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
- 对象#<XMLHttpRequest>没有方法'完成'
- 在XMLHttpRequest之后重新初始化jQuery
- 如何将GreaseMonkey中的XMLHttpRequest延迟到目标页面加载完成
- Javascript XMLHttpRequest——只有第一个POST请求有效
- XMLHttpRequest - difference between Chrome & Firefox
- IE上的新XMLHttpRequest()出现JS Ajax未指定错误
- 非常简单的XMLHttpRequest不起作用
- 如何使用XMLHttpRequest下载文件
- XMLHttpRequest在$.ajax工作的地方给出了CORS错误
- XMLHttpRequest.open()AJAX中的参数url
- XMLHTTPRequest脚本中没有internet连接和超时
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作