AJAX无法上传文件是很头疼的事情,不过我们可以用隐藏在页面上的iframe提交,这里讨论的是用iframe提交表单之后,如果获取返回数据。
HTML代码片断:
form method="post" action="upload_file" target="hiddenFrame"> form的target指向iframe,通过iframe提交表单
Javascript代码:
function uploadFile() {
$('hiddenFrame').onreadystatechange = $('hiddenFrame').onload = function() {
if(this.readyState && this.readyState!= 'complete') {return;} //readyState判断iframe内容是否改变
//获取iframe dom
var frameBody = top.frames[0];
if(!frameBody) return;
frameBody = frameBody.document;
if(!frameBody) return;
frameBody = frameBody.getElementsByTagName('body');
if(!frameBody) return;
frameBody = frameBody[0];
if (!frameBody) return;
}
}
以上代码是通过DOM获取iframe的body下返回的数据,数据可以是文本,也可以是JSON格式,如果是JSON格式,就需要evel()来解释。这种方法是在页面上写静态的iframe,复杂一点可以在页面上用JS创建iframe,不过考虑到可用性,建议还是在页面上写静态的iframe。
找个不错哦,终于找到了。
ReplyDelete