javascript - jquery ajax请求响应404,当发出post请求时

标签 javascript jquery node.js ajax express

我正在创建一个基本的好友请求功能。这是我正在开发的功能之一,当 Ajax 发送 post 请求时,它显示 404。如果我将代码直接放在 server.js 文件中,它就可以工作,但我正在尝试组织代码。有什么解决办法吗?谢谢!

当用户使用电子邮件添加 friend 并点击提交时,client.pug 发出 ajax 请求

$('#addFriend').on('click', function(ev) {
ev.preventDefault();
var searchByEmail = $('#searchByEmail').val();
$.ajax({
    type: 'POST',
    url: '/add',
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    data: {
        email: searchByEmail
    },
    success: function(data) {
        console.log('success');
    }
});
document.getElementById("searchByEmail").value = "";
$('#userModal').modal('hide'); });

Controller /friend.js

 const express = require('express');
 const app = express();
 const User = require('../models/user');
 const bodyParser = require('body-parser');

 var friendRequest = function() {
    app.post('/add', function(req, res) {
        var requestToEmail = req.body.email;
        console.log(requestToEmail);
        User.findOne({
            email: requestToEmail
        }, function(err, email) {
            if (!email) {
                console.log('cannot find the email', err);
                return res.send(err);
            }
            /*
            Add into database
            Display the friend list
            */
         })
     });
 } // End friend request

 module.exports = friendRequest;

server.js包含并使用模块

const friendInvite = require('./controllers/friend');
app.use('/friend', friendInvite);

文件结构

- server.js
- controllers
  - friend.js
- views
  - client.pug

最佳答案

尝试更改 controllers/friend.js 上的代码,如下所示:

const express = require('express');
const app = express();
const User = require('../models/user');
const bodyParser = require('body-parser');

var friendRequest = function() {
app.post('/add', function(req, res) {
    var requestToEmail = req.body.email;
    console.log(requestToEmail);
    User.findOne({
        email: requestToEmail
    }, function(err, email) {
        if (!email) {
            console.log('cannot find the email', err);
            return res.send(err);
        }
        /*
        Add into database
        Display the friend list
        */

        //add this response to client side
        res.json({ 'status': '200', 'desc': 'Success' });
     })
   });
 } // End friend request

module.exports = friendRequest;

如果数据已保存,您必须向客户端发送响应,其标志是什么。 也许你可以尝试在这里检查片段代码: https://github.com/egin10/node_mongoose/blob/master/routes/student.js

关于javascript - jquery ajax请求响应404,当发出post请求时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339491/

相关文章:

javascript - 用户生成的元素上的 ToggleClass() 不起作用

javascript - node.js mysql通配符搜索无法执行

node.js - NodeJS 中使用流和异步读取和处理大小文件

javascript - Angular 深度嵌套响应式表单 : Cannot find control with path on nested FormArray

javascript - 如何在指令 UT 中模拟所需的指令 Controller

javascript - 将文本字符串转换为 JSON 格式 - Javascript

javascript - jquery 切换动画/以相反的顺序

jQuery 将标题标签从一个 div 附加到另一个 div

node.js - 如何更改firebase云函数中的显示名称?

javascript - 使用菜单大小缩放内容