Javascript axios()方法不适用于POST请求

Javascript axios()方法不适用于POST请求,javascript,axios,Javascript,Axios,我试图通过单击Go按钮从startQuiz.ejs页面发送post请求,但始终在服务器上执行get请求。如果我使用postman,则没有问题,但从front-end执行post请求失败 我希望输出为post request,但每次在浏览器上单击GO按钮时,我都会得到get request 这是我的档案 startQuiz.ejs <%- include('./partial/header.ejs'); %> <form id='abcd'> <butto

我试图通过单击
Go按钮
startQuiz.ejs
页面发送
post
请求,但始终在服务器上执行
get
请求。如果我使用
postman
,则没有问题,但从
front-end
执行
post
请求失败

我希望输出为post request,但每次在浏览器上单击
GO按钮时,我都会得到get request

这是我的档案

startQuiz.ejs

<%- include('./partial/header.ejs'); %>


<form id='abcd'>
    <button type="submit">Go</button>
</form>

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js" crossorigin="anonymous ">

    const form = document.querySelector('#abcd');

    form.addEventListener('submit', async(event) => {

        event.preventDefault();
        console.log('Log here');
        try {
            await axios({
                method: 'post',
                url: '/startQuiz',
                data: {
                    firstName: 'Fred',
                },
            });
        } catch (e) {
            console.log(e);
        }

    });
</script>



<%- include('./partial/footer.ejs'); %>
const express = require('express');
const app = express();
const home = require('./routes/home');
const register = require('./routes/register');
const login = require('./routes/login');
const logout = require('./routes/logout');
const me = require('./routes/me');
const createQuestion = require('./routes/createQuestion');
const takeQuiz = require('./routes/takeQuiz');
const startQuiz = require('./routes/startQuiz');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const { checkUser } = require('./middleware/auth');
const path = require('path');

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

app.use(express.static('public'));

app.set('view engine', 'ejs');

app.use(cookieParser());



app.use('*', checkUser);
app.use('/', home);
app.use('/register', register);
app.use('/login', login);
app.use('/logout', logout);
app.use('/me', me);
app.use('/createQuestion', createQuestion);
app.use('/takeQuiz', takeQuiz);
app.use('/startQuiz', startQuiz);

const port = process.env.PORT || 8200;
app.listen(port, () => { console.log(`Running on ${port}`) });
index.js

<%- include('./partial/header.ejs'); %>


<form id='abcd'>
    <button type="submit">Go</button>
</form>

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js" crossorigin="anonymous ">

    const form = document.querySelector('#abcd');

    form.addEventListener('submit', async(event) => {

        event.preventDefault();
        console.log('Log here');
        try {
            await axios({
                method: 'post',
                url: '/startQuiz',
                data: {
                    firstName: 'Fred',
                },
            });
        } catch (e) {
            console.log(e);
        }

    });
</script>



<%- include('./partial/footer.ejs'); %>
const express = require('express');
const app = express();
const home = require('./routes/home');
const register = require('./routes/register');
const login = require('./routes/login');
const logout = require('./routes/logout');
const me = require('./routes/me');
const createQuestion = require('./routes/createQuestion');
const takeQuiz = require('./routes/takeQuiz');
const startQuiz = require('./routes/startQuiz');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const { checkUser } = require('./middleware/auth');
const path = require('path');

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

app.use(express.static('public'));

app.set('view engine', 'ejs');

app.use(cookieParser());



app.use('*', checkUser);
app.use('/', home);
app.use('/register', register);
app.use('/login', login);
app.use('/logout', logout);
app.use('/me', me);
app.use('/createQuestion', createQuestion);
app.use('/takeQuiz', takeQuiz);
app.use('/startQuiz', startQuiz);

const port = process.env.PORT || 8200;
app.listen(port, () => { console.log(`Running on ${port}`) });

提交表单将导航到新页面并取消Ajax请求

如果要发出Ajax请求,需要防止表单提交的默认行为

ex.preventDefault();

ex
是一个非常不寻常的变量名,用于表示事件对象,
e
evt
Event
更常见)。

侦听器回调中的第一个参数可能是
事件
,您在代码中将其命名为
ex
,但您正在检查它是否已定义,如果已定义并返回,则之后的代码将永远不会执行。也许你把它弄错了

form.addEventListener('submit',异步(ex)=>{
如果(ex){
控制台日志(ex);
返回;
}
//代码将在此处停止,因为ex(事件)将始终定义
// ...
});
试试这个

form.addEventListener('submit',异步(事件)=>{
event.preventDefault();
//在此处执行请求
});

位背景信息:

您是否尝试过在请求选项中使用
axios.post()
方法,或者使用
post
小写而不是
post
?另外,我非常确定在您的情况下,事件侦听器
ex
将始终被定义,因为它是事件参数,所以您的回调永远不会执行请求!尝试了您的方法但未获得所需的输出所以您的意思是/startQuiz的快速路线邮政从未被解雇?或者现在有什么问题?是的,但是现在console.log('log here')也不能正常工作。addEventListener()和我还发现fetch()代替axios()也不能正常工作这很奇怪。。。让我来看看我是否能举出一个例子来看看