我正在使用 NodeJS 的 Express 框架。当客户端发出 POST 请求时,它会将一些工作推送到 Python 脚本,然后将 JSON 对象返回到客户端网页。
我的问题是每当我的 POST 请求完成时客户端就会刷新。我已经使用 Axios 和 Fetch http 客户端进行了测试。 在发出这样的 POST 请求时如何防止网页刷新?
服务器代码如下所示:
app.post("/data/", function(req, res) {
const spawn = require("child_process").spawn;
const pythonProcess = spawn('python', ["my_script.py"]);
pythonProcess.stdout.on('data', (data) => {
let result = data.toString();
res.send(JSON.stringify(result));
});
});
然后我从 React 客户端发出请求(使用 Axios,但 Fetch 的行为方式相同):
axios({
method: 'post',
url: `http://localhost:3001/videos/?url=${url}`,
responseType: 'json',
});
客户端网页刷新...
我知道 React 不应该受到指责,因为没有任何东西可以更新应用程序状态。即使我对服务器的响应不执行任何操作,当 POST 完成时,网页仍然会刷新。
此外,我的网页上没有表单元素或类似的内容,并且我的 button
类型为 button
而不是 submit
类型。
我有预感,这与 python 进程本身的调用方式有关,因为如果我只返回一个普通的 JSON 对象而不调用 python 子进程,我的客户端网页会获取数据并且不会刷新。
最佳答案
我明白了。我的 python 进程的一部分是将文件写入 React 的 public 文件夹,这显然会导致 React 热重载。
关于javascript - 为什么我的网页在 NodeJS POST 请求后刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51488646/