如果您以传统方式提交表单,您实际上是在说“我已完成此页面。这里有一堆表单数据供您,Web 服务器,用于呈现我的下一页”。Web 服务器获取表单数据并将下一页返回给浏览器。
如果您不希望页面重新加载,您可以使用 Ajax 提交表单。这对于 jQuery 来说非常简单:
http://api.jquery.com/jQuery.ajax/
使用 Ajax,您可以在提交完成、成功和出错时定义明确的事件。
我不推荐针对隐藏 iframe 的方法。Ajax 更适合这种类型的处理。
更新
这是一个如何构建 Ajax 的示例
<form id='myFormId'>
<!-- Form fields, hidden, file or otherwise -->
</form>
var formVars = $("#myFormId").serialize();
$.ajax({ url: ajaxUrl, cache: false, type: 'POST', data: formVars,
success: function (data) { handleSuccessCase },
error: handleAjaxError });
更新 2
基于https://stackoverflow.com/a/5513570/141172中的评论
你可以试试:
var formVars = $('#myFormId').serialize() + '&foo=' + $('#id_of_your_file_input').val()
或者,您可以尝试在评论中建议的插件,这与上面链接的答案中的解决方案相同。