将表单序列化为json,不带ajax

时间:2014-09-01 14:14:40

标签: javascript json cors

我正在尝试自动化对某些第三方网站的请求,该网站没有API,也没有Access-control-Allow-Origin。所以没有ajax可能,我唯一的选择是重现网站的表格并发布它们。

但是在某些表单上,该站点使用带有JSON编码的ajax,并且似乎不接受以url编码格式的相同数据。

Application/json不是表单的encTypeformEncType属性的可接受值(因此在设置时会被忽略)。我也尝试构建对象并在隐藏字段中将其序列化(使用encType作为纯文本),但是浏览器将忽略没有名称的输入,并且放置名称将失败传递值作为请求内容的技巧。 / p>

在javascript中是否有一种方法可以告诉浏览器在将数据同步发送之前将数据编码为json?

1 个答案:

答案 0 :(得分:2)

您可以将一些json放在name字段中,其余的放在value字段中,所以当你使用enctype text / plain并且浏览器自动在名称后添加一个=时,它会形成一个有效的json字符串。

HTML规范说文本/普通表单是通过写名称,然后是a =,然后是值,然后是换行符。因此,如果将json拆分为=并将第一部分作为名称而将第二部分作为值,则它可能会形成服务器接受的有效字符串。