javascript - POST 请求后触发刷新(AJAX 或 XMLHttpRequest)
问题描述
我试图从 HTML 表单中获得与提交完全相同的行为method="POST"
,但不使用表单,这似乎是不可能的,但我不明白为什么(如果是因为安全问题或其他原因)。
确切的情况如下:我想通过 POST 发送一个 JSON,最后用这个请求的答案触发刷新,但是
- html 表单不接受 JSON 作为字段的编码(我发现了一些规范草案,其中说
enctype=application/json
最终将支持在表单中使用,但似乎已经死了) - XMLHttpRequest 和 Ajax 都通过 POST 成功发送数据,但它们都不会在异步后台调用结束时触发刷新响应内容。我可以在我的页面中的某个 div 中绘制内容,但是当我的 POST 请求被发送到另一个域时,这会在我的站点中显示另一个网站的内容,这是非常不受欢迎的效果。
或多或少,我对 XMLHttpRequest 的尝试如下:
let my_values = {
field1: 10
}
let my_request = new XMLHttpRequest();
// POST to another domain
my_request.open("POST", "http://another.domain.com/");
function refresh(){
// Here I would like to somehow trigger a refresh with
// my_request.responseText's content, and the browser having
// another.domain.com as URL, so, a redirect more or less.
}
my_request.onload = refresh;
my_request.send(JSON.stringify(my_values));
我最接近的是这个网站中描述的内容,做了一个这样的把戏:
<form method='POST' enctype='text/plain'>
<input name='{"field1": 10, "trash": "' value='"}'>
</form>
但这有点像我将自己暴露在某种类似 SQL 注入的攻击中,即使不是这种情况,我也不希望将 json 与一些不必要的字段混淆,只是为了能够从表单。
为什么我不能将 XMLHttpRequest 的执行视为单击href
?它会暴露一些漏洞吗?提前非常感谢,如果问题重复/毫无意义,我们深表歉意。
解决方案
推荐阅读
- printers - 如何在 Windows 上关闭 CafePay 打印机驱动程序
- python - 在 DateTimeIndex 中删除具有重复字符串值的行
- python - 我不明白第一行代码中第一个不正确的语句的用法?
- ios - 如何让 Firebase 动态链接与 App Clips 一起使用?
- javascript - 我的按钮组件在触发 css 动画后禁用。我怎样才能避免它?
- css - 在 Microsoft Edge 88.0.705.50 中滚动时 css 效果不起作用?
- c - 释放非 malloc 的内存
- python - 如何使用初始输入作为 SCons Phony 目标调用交互式 shell?
- node.js - 如何使用 Mongoose 查询数组中的子文档
- python - 如何“从头开始”构建一个只有 python 程序和基本 python 解释器的 docker 容器镜像?