2013-10-13 39 views
0

我有一个文件上传表单如下:如何在提交表单后防止页面重定向/刷新,同时保留文件输入? jQuery的

<form id="upload" action="someurl" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" /> 
    <input type="submit" value="submit" /> 
<form> 

问题是,每次我提出,我会被重定向到表单的操作URL的形式。

如何在仍然保留在同一页面的情况下提交此表单?使用ajax或preventDefault将不起作用,因为我将丢失文件流。

Rendy

+0

现代浏览器允许您在ajax中发布文件。这是你唯一的选择。 (*编辑*不,它不是:) – Pointy

+0

对页面本身的操作如何? –

+0

其实我错了 - 你可以将表单定位到一个隐藏的iframe。 – Pointy

回答

5

只要你有你的页面上的iframe说是隐藏的,

<iframe id="hidden-iframe"></iframe> 

然后添加一个target到您的窗体:

<form id="upload" action="someurl" method="post" target="hidden-iframe" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" /> 
    <input type="submit" value="submit" /> 
<form> 

大功告成!

+0

正确 - 然后在响应页面中,您可以包含一些执行父页面(即带有表单的页面)的适当更新的JavaScript以指示成功等。 – Pointy

+0

我尝试过使用此解决方案,但请求调用状态将会取消。在数据库记录创建与空data.any建议? – stefun

+1

我不得不使用name =“hidden-iframe”,而不是id =“hidden-iframe”,以防止新标签也打开。看到[这个问题]第二个答案(http://stackoverflow.com/questions/5638529/uploading-file-in-a-form-without-page-refresh) – AHowgego

相关问题