5

我有这个提交表单数据的 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>

我需要将表单上的enctypemultipart/form-data设置为- 我上面的代码可以这样做吗?

4

1 回答 1

4

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

所以,让我们问一下您是否可以调整该代码以具有与设置enctype. 该属性对表单提交有三个影响。

  1. 它设置 HTTP 发布请求的内容类型。你可以很容易地做到这一点。headers: { "Content-Type": "multipart/form-data" }
  2. multipart/form-data它使用而不是对表单中的数据进行编码application/x-www-form-urlencoded"-serialize永远不会这样做
  3. 它将包括来自文件输入的文件 -serialize永远不会这样做

jQuery 没有内置任何东西来处理通过 Ajax 上传的文件。MDN 对使用内置浏览器 API 的过程进行了非常详细的描述(请注意,您需要现代浏览器来支持其中一些 API)。

由于您使用的是 jQuery,您可能应该考虑使用支持 Ajax 文件上传的预先编写的库。有很多可用的,但我不能推荐一个特定的。

于 2013-09-18T10:06:44.993 回答