实现步骤

  • 首先在页面上写上iframe标签,并将iframe标签的style设置为“display:none”,而且将iframe标签的name属性设置为,这里我们就将iframe标签的name属性设置为disIframe
  • 其次,将文件上传表单的target属性设置为iframe标签设置的name属性值,上边我们已经设置为disIframe
  • 再就是我们给文件上传的form设置一个id ,这里我们设置为fileupload,利用jquery的id选择器得到这个form,并调用其submit方法就可以得到在jquery中不跳转页面提交文件上传表单
  • 最后,可以判断通过提交给iframe标签的内容来执行相应操作

就单单看iframe执行的这个逻辑,我们就可以看出其实执行逻辑和ajax似乎没有区别,的却,在ajax还没有火起来的时候,都是用iframe来执行类似于ajax的功能的。


详细说明


  • iframe标签的设置
<iframe style="display: none" id="disIframe" name="disIframe"></iframe>



  • form表单的设置
<form  id="fileupload" action="report/singlecheckupload.koala" method="post" enctype="multipart/form-data" target="disIframe">

<input type="file"  name="file">

</form>
  • 顺便提一下,form提交上传文件必须将enctype设置为multipart/form-data
  • jquery代码实现提交表单
$("#fileupload").submit();
  • 我将这个代码写在另一个标签的click方法内,当点击那个标签时就会执行这一个方法。
  • 通过iframe标签中的返回内容执行相应操作
$("#disIframe").load(function() {
            var body = $(window.frames['disIframe'].document.body);
            console.log(body);

            if (body[0].textContent == "success") {
            }
        });

在访问上边form的action的时候,可能会返回success,可能会返回error,通过判断body[0].textContent值来执行form提交完成后的代码逻辑。

总结

iframe加上jquery提交可以实现页面无跳转,不必要单独去点击form的提交按钮去执行form提交。