我知道有很多关于将表单编码为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对表单进行编码而不实际拥有表单(仅在查询中)?我可以添加一行或两行来执行此操作的请求吗? 感谢
答案 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建议的那个),那么可能值得一看成。