expressjs没有返回对html的任何响应

expressjs没有返回对html的任何响应,express,Express,在不使用ajax提交表单时,我可以在my中看到“message sent successfully”(正常工作) 但是在使用ajax$.post()提交表单时,没有收到对$.post()方法的响应。我找不到任何理由 请注意:相同的代码适用于php index.html <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2

在不使用ajax提交表单时,我可以在my中看到“message sent successfully”(正常工作)

但是在使用ajax$.post()提交表单时,没有收到对$.post()方法的响应。我找不到任何理由

请注意:相同的代码适用于php

index.html

<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
      $("#buttons").click(function() {
        $.post("http://localhost:3000/ss", {
          sendemail: $("#email").val(),
          sendname: $("#UserName").val(),
          sendpass: $("#Password").val()
        }, function(res) {
          alert(res);
        });
      });
    });
  </script>

  <body>

    <div class="forms">
      <form>
        <div class="formdiv">
          <label>User Email</label>
          <input type="email" id="email" name="email" />
        </div>
        <div class="formdiv">
          <label>User Name</label>
          <input type="text" name="UserName" id="UserName" />
        </div>
        <div class="formdiv">
          <label>User Password</label>
          <input type="password" name="Password" id="Password" />
        </div>
      </form>
      <div style="background:green;padding:15px;" id="buttons">send</div>
    </div>
  </body>

</html>

console打印用户的电子邮件地址“唯一的问题是对html的响应”

代码本身看起来很正常,尽管存在一个问题,即(我怀疑)您使用它的方式。您不允许
跨源共享
。换句话说,如果您试图在另一个域上运行此代码,您将收到一个CORS错误,因为服务器拒绝响应客户端

因此,我怀疑您正在加载.html文件:

  • 作为本地的html文件
  • 正在从不同的域运行它
这两种方法都会(并且正在)返回上述错误。这就是为什么您没有收到响应,所以您没有看到警报消息

要绕过此问题,您可以:

  • 启用CORS支持
  • 通过服务器呈现HTML文件(因此请求将来自同一域)
示例如下:

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

...

app.get("/", function(req, res)
{
  res.sendFile(path.join(__dirname + '/index.html'));
});

app.post("/signup", function(req, res)
{
  var email = req.body.email;

  if (!email)
  {
    return res.json({
        message: "error occurred"
    });
  }

  res.json({
    success: true;
  });
});

如果我了解客户端上的正确警报(res)返回未定义?或者从不执行?即使你用alert(“hai”)替换alert(res),它也不起作用..我的意思是“从不执行”@slowdeath你能试着用res.end(“消息”)替换res.send吗?我刚才试过了,它在@slowdeath007不起作用,这很奇怪。你是否安装了morgan,这样你就可以看到文章是否以代码200成功结束?你也可以尝试使用函数$.ajax,而不是速记函数$.post
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
var path = require("path");

...

app.get("/", function(req, res)
{
  res.sendFile(path.join(__dirname + '/index.html'));
});

app.post("/signup", function(req, res)
{
  var email = req.body.email;

  if (!email)
  {
    return res.json({
        message: "error occurred"
    });
  }

  res.json({
    success: true;
  });
});