我正在使用一个脚本将交易从我的卡网站发送到本地主机,该脚本准确地接收了它,并且还成功发送了 json 响应,但之后
console.log
根本不显示它。我可以在开发工具中的网络选项卡上检查响应,但只是好奇不打印 json 响应的原因是什么。
async function sendData(username, transactions) {
let apiUrl = "http://localhost:3100/api";
let postOptions = {
method: "POST",
cache: "no-cache",
headers: {
"Content-Type": "application/json",
},
redirect: "follow",
referrerPolicy: "no-referrer",
body: JSON.stringify({ username, transactions }),
};
try {
let response = await fetch(apiUrl, postOptions);
if (!response.ok) {
throw new Error(`Response status: ${response.status}`);
}
let serverMessage = await response.json();
console.log(serverMessage);
} catch (error) {
console.log(error.message);
}
}
我什至尝试不使用
async
,如下所示,但仍然没有打印任何内容。
function sendData(username, transactions) {
let apiUrl = "http://localhost:3100/api";
let postOptions = {
method: "POST",
cache: "no-cache",
headers: {
"Content-Type": "application/json",
},
redirect: "follow",
referrerPolicy: "no-referrer",
body: JSON.stringify({ username, transactions }),
};
fetch(apiUrl, postOptions)
.then((res) => res.json())
.then((msg) => console.log(msg))
.catch((e) => console.log(e));
}
一个澄清: 当我在 JS 注入器 chrome 扩展(例如 scripty)中运行相同的代码(当然有一些触发前端)时,它会打印响应,但当我在控制台中手动调用它时不会打印响应。
我刚刚通过我的 URL 使用模拟服务器端对其进行了测试,其中服务器响应一些 JSON 内容。此 URL 是我用于测试您的代码的唯一修改。
一切正常,并且可以与您原来的异步变体一起使用。
console.log(serverMessage);
行准确输出服务器端规定的测试 JSON 字符串。我用 node.js 测试了你的代码。
所以,问题不在于您在问题中提出的代码。可能的问题可能在于错误的观察:您可能已经停止了 localhost 上的服务,服务部分可能在测试之间被破坏,或者您可能提供了与您正在执行的不完全相同的 JavaScript。请仔细检查所有内容,您的脚本应该可以再次运行。