似乎无法设置Form的编码类型。 (JavaScript)的

时间:2010-11-10 23:50:43

标签: javascript json

我正在尝试使用编码类型“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";

我是否尝试设置错误的属性,或者我只是将其设置错误?有什么想法吗?

4 个答案:

答案 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 = “多部分/格式数据”