当我向NodeJS发出GET请求时,它不会在路由中运行代码

时间:2018-07-31 01:49:10

标签: javascript node.js ajax

我正在尝试用ajax发出get请求,它似乎没有在NodeJS / tools路由中运行代码,也许有人可以启发我。我想从AJAX请求中的nodeJS运行脚本。 xhr GET请求似乎不适用于在nodejs路由中启动该控制台日志。

这是我的路线。

const express = require('express');
const router = express.Router();
const User = require('../models/user.js');
const mid = require('../middleware');
const axios = require('axios');
// Home Routes

router.get('/', (req, res, next) => {
    res.render('index');
});

// About Routes

router.get('/about', (req, res, next) => {
    res.render('about', {title : '| About'});
});

// Tools Routes

router.get('/tools', (req, res, next) => { 
    console.log("ajax request went through!");

});

router.post('/tools', (req, res, next) => {
    var domain = req.body.domain;
    canYouDigIt(domain);

});

router.get('/map', (req, res, next) => {
    res.render('map');
});
// Login Routes

router.get('/login', mid.loggedOut, (req, res, next) => {
    res.render('login', {title : '| Log in'});
});

router.post('/login', (req, res, next) => {
    if ( req.body.email && req.body.password) {
        User.authenticate(req.body.email, req.body.password, function(error, user){
            if (error || !user) {
                var err =new Error('Wrong email or password.');
                err.status = 401;
                return next(err);
            } else {
                req.session.userId = user._id;
                return res.redirect('/profile');
            }
        });
    } else {
        var err =new Error('Email and password are required!');
        err.status = 401;
        return next(err);
    }

});


// Logout Routes

router.get('/logout', (req, res, next) => {
    if (req.session){
        // Delete Session
        req.session.destroy(function(err) {
            if(err) {
                return next(err);
            } else {
                return res.redirect('/');
            }
        });
    }
});

// Registration Routes 

router.get('/registration', mid.loggedOut, (req, res, next) => {
    res.render('registration', {title : '| Registration'});
});

router.post('/registration', (req, res, next) => {
    // Check if all fields are filled
    if (req.body.userName && req.body.password && req.body.confirmPassword && req.body.firstName && req.body.lastName && req.body.email) {

        // Confirm Password is the same
        if ( req.body.password != req.body.confirmPassword) {
            const err = new Error ("Passwords don't match!");
            err.status = 400;
            return next(err);
        };

        const userData = {
            userName: req.body.userName,
            password: req.body.password,
            firstName: req.body.firstName,
            lastName: req.body.lastName,
            email: req.body.email
        };

        // Use schema 'create' method to insert document into Mongo
        User.create(userData, (error, user) => {
            if (error) {
                return next(error);
            } else {
                req.session.userId = user._id;
                return res.redirect('/profile');
            }
        });
    } else {
        const err = new Error("All Fields Required.");
        err.status = 400;
        return next(err);
    }
});


module.exports = router;

这是我的html / pug呼叫路线

section(id="digToolWrapper")
        form( id="digToolInput" )
            ul
                li #[input(id="digTool" name="domain" type="text" placeholder="Can you dig it?")]#[input(id="whois" value="whois" type="button" onclick="digIt()")]

这是我的ajax请求

function digIt() {
    var xhr = new XMLHttpRequest();
    var domain = document.getElementById("digTool").value;
    xhr.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          console.log(domain);
        }
     };
    xhr.open('GET', '/tools', true);
    console.log(domain);
    xhr.send();

};

App.js文件

const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const path = require('path');
const mongoose = require('mongoose');
const MongoStore = require('connect-mongo')(session);
const axios = require('axios');
const app = express();


// Mongodb connection
mongoose.connect("mongodb://localhost:27017/nymadic", { useNewUrlParser: true });
const db = mongoose.connection
// Mongo error
db.on('error', console.error.bind(console, 'connection error:'));


// Use sessions for tracking logins
app.use(session({
    secret: 'keyboard cat!',
    resave: true,
    saveUninitialized: false,
    // This stores sessions in the Mongo DB so the server doesnt become overloaded
    store: new MongoStore({
        mongooseConnection: db
    })
}));


// Make user ID available in template 
app.use(function (req, res, next){
    res.locals.currentUser = req.session.userId;
    next();
});

// Body Parser and Cookie Parser
app.use(bodyParser.urlencoded({ extended:false }));
app.use(cookieParser());

// Static Files
app.use(express.static(__dirname + '/public'));

// Pug Render Engine
app.set('view engine', 'pug');

// Routes
const mainRoutes = require('./routes');
const profileRoutes = require('./routes/profile');
const wikiRoutes = require('./routes/wiki');

app.use(mainRoutes);
app.use('/profile', profileRoutes);
app.use('/wiki', wikiRoutes);

app.listen(8080, () => {
    console.log('Nodejs is running on port 8080...');
  });

0 个答案:

没有答案