我正在尝试自动向某些第三方网站发出请求,该网站没有 API,也没有 Access-control-Allow-Origin。所以不可能使用ajax,我唯一的选择是复制网站的表单并发布它们。
但是在某些表单上,该网站使用带有 JSON 编码的 ajax,并且似乎不接受 url 编码格式的相同数据。
Application/json
不是表单的 encType
或 formEncType
属性的可接受值(因此在设置时会被忽略)。我还尝试构建对象并将其序列化在隐藏字段中(将 encType 作为纯文本),但浏览器会忽略没有名称的输入,并且输入名称将击败传递值作为请求内容的技巧。
javascript中有没有办法告诉浏览器在同步发送数据之前将数据编码为json?
最佳答案
您可以将一些 json 放在名称字段中,将其余的放在值字段中,因此当您使用 enctype text/plain 并且浏览器会自动在名称后面添加 = 时,它会形成有效的 json字符串。
HTML 规范规定,文本/普通表单是通过编写名称、然后是 =、然后是值、最后是换行符来创建的。因此,如果您在 = 上拆分 json 并将第一部分作为名称,第二部分作为值,它可能会形成服务器接受的有效字符串。
关于javascript - 将表单序列化为 json,不使用 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25607748/