【发布时间】:2022-11-24 01:11:11
【问题描述】:
下面的按钮正在调用 jquery 函数进行发布
<button class="btn btn-primary" onclick=login()>Login</button>
下一段代码是jquery函数 `
function login() {
console.log('Login Called')
const finalData = ({"username":$('#name').val(),"paswword":$("#surname").val()})
console.log('Data Sent for login ',JSON.stringify(finalData))
$.ajax({
type: 'POST',
url: 'http://localhost:3002/login',
contentType: 'application/json',
data: JSON.stringify(finalData),
success: (data) => {
console.log(data)
}
});
}
最后一段代码是Express的API
app.post('/login',(req,res)=>{
const data = req.body
console.log('Data Sent from front end ',data)
connection.execute(
'SELECT * FROM User WHERE email=? AND password=?',
[data.username,data.password],
function(err,results,fileds){
if(results.length===1)
res.send({'message':'OK'})
else if(results.length===0)
res.send({'message':'No'})
}
)})
我还发布了我在端点上方提到的服务器端点要求,只是为了确保它不是导致问题的原因之一。
'use strict';
var express = require('express'),
app = express(),
port = parseInt(process.env.PORT, 10);
var https = require('https');
var bodyParser = require('body-parser');
var cors = require('cors');
var fs = require('fs');
var config = require('./config.json');
server = require('http').Server(app);
var io = require('socket.io')(server);
var strFormat = require('string-format');
var mysql = require('mysql2');
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(cors());
app.use(express.raw());
var connection = mysql.createConnection(config.sqlConn);
console.log('Database Connected')
API 正常工作,因为我使用 Advanced RESTClient 应用程序发布到后端并且端点正确返回值。 此外,单击按钮时 jqeury 函数可以正确访问表单中的数据。但是,它不会发布到端点。我在我的时间里没有使用过很多 jquery,所以目前很困惑为什么会这样。我真的很感激一些帮助,因为我创建的 POST 函数与我在我的一个反应项目中所做的相同。
【问题讨论】:
-
为什么你的 json 结构用括号括起来??
-
您在登录功能中看到您的 console.log 了吗?
-
@Lk77 是的。它被完美地称为。登录函数中的 console.log 均被正确调用。但是,app.post 函数中的 console.log 只是不打印任何内容。
-
@DevMan 是的,我删除了那些。但是括号不是问题,因为当我执行 JSON.stringify 时,对象的结构是正确的。
-
检查网络选项卡中的请求以查看是否有问题,如果启用了 cors,您应该会看到两个请求,一个 OPTIONS 请求和一个 POST 请求。如果您的 api 在另一个域/端口上,则可能是 cors 问题。您的请求状态如何? 200 ??或者是其他东西 ?