javascript - 发布到 Node/快速端点的 Ajax 问题

标签 javascript jquery node.js ajax

自从我使用 JQuery/Ajax 而不是 axios 连接到端点以来已经有一段时间了,我在这里做错了什么?

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

var port = process.env.PORT || 3000;

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))

app.use(function (req, res, next) {
  

      res.setHeader('Access-Control-Allow-Origin', '*');
  

      res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  

      res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
  

      res.setHeader('Access-Control-Allow-Credentials', true);
  
      // Pass to next layer of middleware
      next();
  });

app.get('/', function(req, res) {
  console.log(req.body);
  res.sendFile(path.join(__dirname, '../public/src', 'index.html'))

})

app.listen(port, function(error) {
  if(error){
    console.log(error);
  }
  console.log('Express is listening on port: ', port);
})

我的客户端代码是:

<html lang="en">

<head>
    <title></title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
    <script>
        function buttonClick() {
            $.ajax({
                url: 'http://localhost:3000',
                type: 'POST',
                data: {
                    'See me?': 'YEAH?'
                },
                dataType: 'json',
                success: function(data) {
                    alert('This is the data: ', data)
                },
                error: function(error) {
                    alert('This is an error: ', error)
                }
            })
        }
    </script>
</head>

<body>
    <h3>Hello world</h3>


    <button onclick="buttonClick()"> Click Me! </button>


</body>

</html>

每当我点击“点击我”按钮时,我都会收到错误:

POST http://localhost:3000/ 404 (Not Found)
(anonymous) @ VM174:1
send @ jquery-3.2.1.min.js:4
ajax @ jquery-3.2.1.min.js:4
buttonClick @ (index):11
onclick @ (index):33
VM174:1 XHR failed loading: POST "http://localhost:3000/".

有谁知道为什么会这样吗?顺便说一句,当我刷新页面时,我总是在服务器上获得控制台日志。控制台日志应该发生的唯一时间是调用 AJAX post 时。它似乎在每次刷新时都会被调用。

最佳答案

服务器端没有 post 处理程序,只有 get 处理程序。

将其更改为发布或向您的服务器添加新的发布端点。

app.post('/', function(req, res) {
  console.log(req.body);
  ......
})

关于javascript - 发布到 Node/快速端点的 Ajax 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46166446/

相关文章:

javascript - nodejs 返回了意外的奇怪输出

javascript - 使用 Angular js 进行路由

javascript - 我必须使用 google.maps.event.addListener(marker, 'click' , function(){}) 吗?

node.js - 帐号缺失或无效 UPS 运输 API 错误代码 (9500523)

javascript - 在 React 中 - 如何从 .sh(Shell 脚本)文件中获取值?

javascript - 在 javascript 中调用另一个函数时值不变

c# - 使用C#从jsignature转换base30图像

javascript - CDN 上的多个文件与本地一个文件

javascript - 如果一个 div 与另一个 div 重叠,则隐藏它

node.js - Heroku 上出现错误。无法启动 Chrome