我正在尝试使用编码类型“application/json
”硬连线动态创建的表单来发送JSON。
在jQuery中,我会在contentType
或$.ajax
中将其设置为“$.post
” - 但出于某些原因,我需要手动执行此操作。
我有以下代码,但它不起作用。它仍然将enctype默认为application/x-www-form-urlencoded
data = data;
var form = document.createElement("FORM");
form.style.display = "none";
form.action = url;
form.setAttribute('enctype', 'application/json');
form.method = "post";
我是否尝试设置错误的属性,或者我只是将其设置错误?有什么想法吗?
答案 0 :(得分:4)
不确定支持' application / json '作为有效的enctype。根据HTML401规范:
“W3C用户代理必须支持下面列出的内容类型(application / x-www-form-urlencoded,multipart / form-data)。其他内容类型的行为未指定。”
http://www.w3.org/TR/html401/interact/forms.html#form-content-type
所以我认为对此的支持取决于浏览器供应商。
如果你想模仿jQuery和其他javascript库的工作方式,那么你将使用xmlhttp request to post your data而不是使用FORM元素,你不需要告诉服务器你会选择什么样的内容类型当你这样做时,服务器将(正确地)假设您正在使用application / x-www-form-urlencoded。
答案 1 :(得分:2)
我认为form
无法做到这一点。
您需要在服务器端执行此操作。或者,如果您必须在发送之前在客户端上执行此操作(不推荐),请查看JSON library。
答案 2 :(得分:0)
您应该查看w3Schools reference。
form.enctype = enctype;
编辑 - 我没注意到您希望表单将数据编码为JSON ......这不会发生。使用AJAX或处理服务器端并以JSON格式返回响应。
答案 3 :(得分:0)
我相信你应该使用
ENCTYPE = “多部分/格式数据”