将表单序列化为json,不使用ajax

Serialize form as json, without ajax

本文关键字:ajax json 表单 序列化      更新时间:2023-09-26

我正在尝试自动请求某些第三方网站,该网站没有API,也没有Access-control-Allow-Origin。因此,如果没有ajax,我唯一的选择就是复制网站的表单并发布它们。

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

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

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

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

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