我有这个提交表单数据的jquery代码:
<script type="text/javascript">
$(document).ready(function(){
$("#message").hide();
$("#please_wait_box").hide();
$("#viewreseller").submit(function(e){
e.preventDefault();
dataString=$("#viewreseller").serialize();
$.ajax({
type: "POST",
url: "view_reseller-go.php",
cache: false,
data: dataString,
success: function(res){
//$("#message").show();
$("#please_wait_box").hide();
$("#message").html(res);
$('#message').fadeIn('slow');
if(res.indexOf("success")!=-1)
{
window.location.href = res.substr(8);
}
}
});
});
});
</script>
我需要将表单上的 enctype 设置为multipart/form-data
- 这可以通过上面的代码实现吗?
答案 0 :(得分:4)
由于您使用Ajax提交表单数据,因此设置enctype
将不起作用。您完全绕过了将使用它的表单提交过程。
因此,让我们问一下您是否可以调整该代码以获得与设置enctype
相同的效果。该属性对表单提交有三种效果。
headers: { "Content-Type": "multipart/form-data" }
multipart/form-data
代替application/x-www-form-urlencoded"
对表单中的数据进行编码 - serialize
永远不会这样做serialize
永远不会执行此操作jQuery没有内置任何东西通过Ajax处理文件上传。 MDN has a pretty detailed description of the process for using built in browser APIs(请注意,您需要一个现代浏览器来支持其中一些API)。
由于您使用的是jQuery,因此您应该考虑使用支持Ajax文件上载的预编写库。有plenty of them available,但我不推荐具体的。