如何在jquery POST中将enctype作为multipart / form-data发送

时间:2013-12-02 06:07:39

标签: javascript jquery ajax forms

我知道有很多关于将表单编码为multipart / form-data的问题,但似乎大多数都与上传文件有关。 我对上传文件不感兴趣;我也没有实际的表格。我只需要一个按钮,在点击时调用以下功能:

$.post("http://html5.validator.nu/",
{
    headers: { 'Content-Type': 'multipart/form-data' }, //this doesn't work !
    content:"<!DOCTYPE html>"//the value of content doesn't matter at the moment
},
function(data){
    print(data);
});

执行AJAX请求,但来自validator.nu(服务器)的响应是:

application/x-www-form-urlencoded not supported. Please use multipart/form-data

如何使用multipart / form-data对表单进行编码而不实际拥有表单(仅在查询中)?我可以添加一行或两行来执行此操作的请求吗? 感谢

1 个答案:

答案 0 :(得分:0)

"multipart/form-data"对于httpd并不像UA那么重要。您的浏览器会看到enctype="multipart/form-data"并进行特殊处理,其中最重要的部分在于它对发送到httpd的MIME请求进行整形的方式。

以下是实际multipart/form-data HTTP请求中最相关的部分(使用requestb.in捕获):

  

内容长度:533

     

内容类型:multipart / form-data;边界= ---- WebKitFormBoundaryEknFTYZrogVNxemQ

     

------ WebKitFormBoundaryEknFTYZrogVNxemQ

     

内容 - 处置:表单数据; NAME = “foo” 的;文件名= “foo.png”

     

内容类型:image / png

     

PNG

     

[PNG数据已删除]

     

------ WebKitFormBoundaryEknFTYZrogVNxemQ

     

内容 - 处置:表单数据; NAME = “提交”

     

提交

     

------ WebKitFormBoundaryEknFTYZrogVNxemQ -

所有这一切,构建这些MIME部分可能有点像PITA,所以如果你能找到一个库来为你做这件事(比如@Innovation建议的那个),那么可能值得一看成。