- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过 fetch 发送 JSON 格式的填写表格POST 到已使用“npm http-server”设置的本地服务器。服务器已使用命令“http-server --cors”启动。单击提交按钮时的错误消息是:“405(方法不允许)”。我在 Chrome 和 Edge 中尝试过。
我现在有点不知所措。与CORS安全设置有关吗?我是否需要服务器端 node.js 脚本来允许此调用?是因为我只使用本地服务器吗?我迷路了...
非常感谢任何帮助!对这一切都很陌生,但我渴望学习。
下面是 JSON 和 JavaScript 代码。两者都位于本地服务器上的同一主目录中:
JSON:
[
{
"id":1,
"name":"Rick",
"email":"rick@gmail.com"
},
{
"id":2,
"name":"Glenn",
"email":"glenn@gmail.com"
},
{
"id":3,
"name":"Negan",
"email":"negan@gmail.com"
}
]
用于显示 JSON 并上传新条目的 HTML 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Fetch API Sandbox</title>
</head>
<body>
<h1>Fetch API Sandbox</h1>
<button id="getUsers">Get JSON</button>
<div id="output"></div>
<!--Hier wird das JSON reingeschrieben-->
<form id="addPost">
<div> <input type="text" id="id" placeholder="ID"> </div>
<div> <input type="text" id="name" placeholder="Name"> </div>
<div> <input type="text" id="email" placeholder="E-Mail"> </div>
<input type="submit" value="Submit">
</form>
<script>
document.getElementById('getUsers').addEventListener('click', getUsers);
document.getElementById('addPost').addEventListener('submit', addPost);
function getUsers() {
fetch('users.json')
.then(function(response) {
if (response.ok)
return response.json();
else
throw new Error("Names could not be loaded!")
})
.then(function(json) {
console.log(json);
let output = '<h2>Users</h2>';
json.forEach(function(user) {
output += `
<ul>
<li>ID: ${user.id}</li>
<li>Name: ${user.name}</li>
<li>Email: ${user.email}</li>
</ul>
`;
console.log(output);
document.getElementById("output").innerHTML = output;
});
})
}
function addPost(e) {
e.preventDefault();
let id = document.getElementById('id').value;
//console.log(id);
let name = document.getElementById('name').value;
let email = document.getElementById('email').value;
fetch('users.json', {
method: 'POST',
mode: 'cors',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify({
id: id,
name: name,
email: email
})
})
.then((res) => res.json())
.then((data) => console.log(data))
}
</script>
</body>
</html>
最佳答案
http-server
是静态文件服务器。它只会处理 GET
请求。
但是,您很幸运,因为有一个类似的包,它允许您使用单个命令运行 RESTful API。它的名字叫json-server
。您只需要提供一个 JSON 文件,它将充当您的“数据库”的 Angular 色。在您的情况下,JSON 可能如下所示:
{
"users": [
{
"id": 1,
"name": "Rick",
"email": "rick@gmail.com"
},
{
"id": 2,
"name": "Glenn",
"email": "glenn@gmail.com"
},
{
"id": 3,
"name": "Negan",
"email": "negan@gmail.com"
}
]
}
当您使用 json-server db.json
运行服务器时,这将为端点 /users
创建 GET/POST/PATCH/DELETE 方法处理程序。然后,您将能够从“数据库”获取/插入/更改/删除记录。在您的情况下,fetch
调用端点 URL 必须更改为:fetch('localhost:3000/users', ...)
。
您可以通过运行npm install -g json-server
来全局安装该软件包。
关于javascript - 使用 fetch() POST 将表单发送到本地服务器失败。错误405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48136069/
我在使用以下代码时遇到问题: function http_file_exists($url){ $f=fopen($url,"r"); if($f){ fclose($f); retu
我已经通过 Git 部署到 Azure 几个月了,没有出现重大问题,但现在我似乎遇到了一个无法克服的错误。 我创建了一个新的 Azure 网站,为正在开发的项目创建单独的预览链接。我在新站点上设置了
我已经通过flutter创建了一个App并完成了它,我想在flutter文档中阅读时进行部署。 我收到此错误: FAILURE: Build failed with an exception. * W
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
我正在尝试使用 RapidJSON 解析从服务器接收到的数据。以下是收到的确切字符串: [ { "Node": "9478149a08f9", "Address": "172.17
我尝试为 ios 编译 OpenCV。我总是收到这些错误。我用不同版本的opencv试了一下,结果都是一样的。 我运行这个:python 平台/ios/build_framework.py ios_o
我在一台机器上做基本的发布/订阅,我的客户端是 StackExchange-Redis 的 C# 客户端,我在同一台机器上运行基于 Windows 的 Redis 服务器(服务器版本 2.8.4) 当
我有这段代码,但无法执行,请帮我解决这个问题 连接 connect_error) { die ("connection failed: " . $terhubung->connect_erro
我在 tomcat 上运行并由 maven 编译的 Web 应用程序给出了以下警告和错误。我可以在本地存储库中看到所有 JAR,但有人可以帮忙吗。 WARNING: Failed to scan JA
我正在 Windows 8 上使用 Android Studio 开发一个 android 应用程序,我正在使用一些 native 代码。突然间我无法编译我的 C 文件。当我运行 ndk-build
下面的代码对类和结构的成员进行序列化和反序列化。序列化工作正常,但我在尝试使用 oarch >> BOOST_SERIALIZATION_NVP(outObj); 反序列化时遇到了以下错误; 代码中是
如果我运行此命令“rspec ./spec/requests/api/v1/password_reset_request_spec.rb”,此文件中的所有测试都会通过。 但是,当我运行“rspec”时
我在尝试执行测试以使用 Protractor 上传文件时出错,我的代码是这个 it('it should be possible to upload a file', function() {
System.loadLibrary("nativefaceswap"); 当我运行我的应用程序时,我在 Android Studio 中发现了此类错误。在logcat中显示: java.lang.U
我希望有人能帮助我!使用任何方法或命令行的任何 SSL/HTTPS 调用均无效。 我在 Windows 10 中使用 Ubuntu Server 18.04 作为子系统。我的问题是昨天才开始出现的,因
通过删除这两个值将日期字段从 null=True 和 Blank=True 更改为 required 时,使用 db.alter 命令时遇到问题。 当以下行被注释掉时,迁移运行不会出现问题。
我第一次使用 Heroku 尝试创建应用程序(使用 SendGrid 的 Inbound Parse Webhook"和 Twilio SMS 通过电子邮件发送和接收 SMS 消息)。通过 Virtu
我正在将我的 swift 项目更新到 Xcode 7 上的 Swift 2.0。xcode 在构建项目时报告了以下错误: 命令/Applications/Xcode.app/Contents/Deve
在我的代码中,SSL 库函数 SSL_library_init() 没有按预期返回 1。我如何才能看到它返回了什么错误? 我在 SSL_library_init() 之后调用了 SSL_load_er
我正在尝试运行在以下链接中找到的答案: Asynchronously Load the Contents of a Div 但是当我这样做时,我会遇到我不太理解的错误。 我的代码: $(documen
我是一名优秀的程序员,十分优秀!