在ajax上的html表单enctype

时间:2013-09-18 09:50:59

标签: jquery html ajax

我有这个提交表单数据的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 - 这可以通过上面的代码实现吗?

1 个答案:

答案 0 :(得分:4)

由于您使用Ajax提交表单数据,因此设置enctype将不起作用。您完全绕过了将使用它的表单提交过程。

因此,让我们问一下您是否可以调整该代码以获得与设置enctype相同的效果。该属性对表单提交有三种效果。

  1. 设置HTTP post请求的内容类型。你可以轻松地做到这一点。 headers: { "Content-Type": "multipart/form-data" }
  2. 使用multipart/form-data代替application/x-www-form-urlencoded"对表单中的数据进行编码 - serialize永远不会这样做
  3. 它将包含来自文件输入的文件 - serialize永远不会执行此操作
  4. jQuery没有内置任何东西通过Ajax处理文件上传。 MDN has a pretty detailed description of the process for using built in browser APIs(请注意,您需要一个现代浏览器来支持其中一些API)。

    由于您使用的是jQuery,因此您应该考虑使用支持Ajax文件上载的预编写库。有plenty of them available,但我不推荐具体的。