Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express服务器似乎给出200,然后在post请求时给出404_Javascript_Jquery_Node.js - Fatal编程技术网

Javascript Express服务器似乎给出200,然后在post请求时给出404

Javascript Express服务器似乎给出200,然后在post请求时给出404,javascript,jquery,node.js,Javascript,Jquery,Node.js,我正在自学NodeJS来创建一个应用程序,而我在Express中遇到了一个问题,服务器似乎在post请求中返回了200个代码,但由于某种原因立即变成了404 在客户端和服务器之间添加jquery方法以首先进行前端验证之前,请求得到了正确处理。以前,我只是 将“action='/login'”作为表单标记的一个属性包含在内,它就起作用了 我正在使用快速发电机 以下是表单信息的外观(在Jade中): 它由welcome-screen.js中的此函数处理,该函数位于我在app.js中指定的静态目录中

我正在自学NodeJS来创建一个应用程序,而我在Express中遇到了一个问题,服务器似乎在post请求中返回了200个代码,但由于某种原因立即变成了404

在客户端和服务器之间添加jquery方法以首先进行前端验证之前,请求得到了正确处理。以前,我只是
将“action='/login'”作为表单标记的一个属性包含在内,它就起作用了

我正在使用快速发电机

以下是表单信息的外观(在Jade中):

它由welcome-screen.js中的此函数处理,该函数位于我在app.js中指定的静态目录中

$(document).ready(function() {
    $("#loginfo").submit(function(event, done) {
        checkEmail();
    });
});

function checkEmail() {
    var email = document.forms["logins"]["usrname"].value;
    console.log(email);
    if (email.length != 0) {
        getLogin(email);
    }
}

function getLogin(email) {
    $.post("/login", {"usrname" : email});
}
以下是处理“/login”上的post请求的服务器代码。控制台显示print语句,因此我知道请求正在发送到服务器,并且可以找到“/login”

var express = require('express');
var router = express.Router();
....
router.post("/login", function(req, res) {
    console.log(req.body["usrname"]);
    var user = req.body["usrname"];
    res.render("login", {title : "Hello!",
                    username : user});
    console.log("Passed rendering");
});
但是,我被重定向到默认错误页面,出现404错误

这是我得到的堆栈跟踪,如果对任何人都有帮助的话

Error: Not Found
    at D:\projects\neg5\app.js:30:13
    at Layer.handle [as handle_request]      (D:\projects\neg5\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (D:\projects\neg5\node_modules\express\lib\router\index.js:312:13)
at D:\projects\neg5\node_modules\express\lib\router\index.js:280:7
at Function.process_params (D:\projects\neg5\node_modules\express\lib\router\index.js:330:12)
at next (D:\projects\neg5\node_modules\express\lib\router\index.js:271:10)
at D:\projects\neg5\node_modules\express\lib\router\index.js:618:15
at next (D:\projects\neg5\node_modules\express\lib\router\index.js:256:14)
at Function.handle (D:\projects\neg5\node_modules\express\lib\router\index.js:176:3)
at router (D:\projects\neg5\node_modules\express\lib\router\index.js:46:12)
在我发送post请求后,控制台打印express生成器中包含的这两行代码,这样我就知道找到了“/login”

POST /login 200 34.463 ms - 598
POST / 404 25.479 ms - 1398

我一直在揪头发,想弄明白为什么这不管用。任何帮助都将不胜感激

您需要将
action=“/login”
添加到您的登录表单中(在
views/index.jade
中),如下所示:

form(name="logins" id="loginfo" action="/login" role="form" method="post")
    // rest of view omitted 
这说明已经发送了两个请求,一个是/login,另一个是/

   POST /login 200 is trigger by code $.post()
   POST/ 404  is triggered by code $.submit()

你的代码在GitHub上吗?试试下面我的建议,如果它不起作用,我可以看看整个项目吗?这个修复没有解决问题:(有没有办法不把url放在这里就把它发送给你?我在用bitbucket做这个项目?它告诉我我需要20个声誉才能在那个房间里交谈我应该在那里发布什么?你的回购协议的链接(如果你想分享)
POST /login 200 34.463 ms - 598
POST / 404 25.479 ms - 1398
   POST /login 200 is trigger by code $.post()
   POST/ 404  is triggered by code $.submit()