【问题标题】:Error 405 with AJAX, Javascript, Node (Body-Parser and CORS), and XMLHttpRequest带有 AJAX、Javascript、Node(Body-Parser 和 CORS)和 XMLHttpRequest 的错误 405
【发布时间】:2022-01-11 03:47:03
【问题描述】:

所以,我正在尝试从按钮创建一个 JSON 文件,并且我能够从我创建的 JSON 文件中检索数据,但是我无法使用 XMLHTTPRequest 和/或 Ajax 向它们发布。我可以使用仅使用 url 的路由添加到 JSON 文件,但我不知道如何为以下代码设置路由。

(另外,似乎无论我做什么,我总是收到一个 '405 错误消息 - 方法不允许。我已通过 Google Chrome 设置安全性授予该站点的权限,并且我已经下载了 NPM 的所有包Cors 和 Body-Parser。)

我在做什么让我不断收到 405 错误,我是否需要创建一个通常用于表单添加数据的路由?

任何建议将不胜感激。谢谢!

服务器.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var cors = require("cors");


// PORT CONNECTION
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
    console.log(`Server Port: ${PORT}`);
});

//PUBLIC FOLDER
app.use(express.static('public'));

// parse application/json
var jsonBP = app.use(bodyParser.json());

app.use(function (req, res) {
    res.setHeader('Content-Type', 'application/json');
  });

  // POST /api/users gets JSON bodies
app.post('/api/actions', jsonBP, function (req, res) {
    buttons.response
  });

//CORS
app.use(cors());

Javascript:

  for (i = 0; i < facialExpressions.length; i++) {
    var CreateButton = document.createElement("button");
    var section = "Facial Expressions";
    CreateButton.innerText = facialExpressions[i];
    document.getElementById("facial").appendChild(CreateButton);
    CreateButton.addEventListener("click", function (e) {
      e.preventDefault();
      var params = JSON.stringify({
        action: this.innerHTML,
        date: Date(),
        section: "Facial Expressions",
        videoID: videoID,
        username: username
      });

      console.log(params);
      
      
    
      xhr.open("post", "./db/actions.json", true);
      xhr.setRequestHeader("Content-Type", "application/json");
      console.log('READYSTATE: ', xhr.readyState);
      xhr.onreadystatechange = () => {
        if(xhr.readyState == 4 && xhr.status ===201){
          let object = JSON.parse(xhr.response);
          console.log(object);
        }
      }

      //Sends Request
      xhr.send(encodeURIComponent(params));
    
    });
  }

HTML

  </br></br>
<p id="status"></p>
    <table>
        <tr>
            <td width="10%">
                <h3>Facial Expressions</h3>
            </td>
            <td width="50%">
                <h3>Video</h3>
            </td>
            <td width="40%">
                <h3>Physical Actions</h3>
            </td>
        </tr>
        <tr>
            <td>
                <div id="facial"></div>

            </td>
            <td>

                <div id="videoPlayer"></div>
                <div>
                    <button id="start">Start</button>
                </div>
            </td></tr>
            <tr>
            <td colspan="3">
                <div id="actions"></div>
            </td>
        </tr>
        </tr>
    </table>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="../script.js"></script>

【问题讨论】:

    标签: javascript ajax npm xmlhttprequest


    【解决方案1】:

    我实际上意识到我需要创建一个路由/REST API。这样做之后,我就可以绕过 405 错误了。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2017-09-06
    • 2013-03-04
    • 1970-01-01
    • 2016-08-26
    • 2021-02-15
    • 2015-05-14
    • 2018-04-10
    • 1970-01-01
    • 2013-01-21
    相关资源
    最近更新 更多