鍍金池/ 問答/數(shù)據(jù)庫  HTML  Office/ 前后端傳數(shù)據(jù)報錯,為什么可以通過Ajax把數(shù)據(jù)傳遞到后臺,但是控制器也報錯?

前后端傳數(shù)據(jù)報錯,為什么可以通過Ajax把數(shù)據(jù)傳遞到后臺,但是控制器也報錯?

Ajax代碼:

$(function () {
    var $register = $(".register");
    var $login = $(".login");

    $login.find(".submit").on('click',function () {
        
    });

    $register.find('button').on('click', function(){
    //    通過ajax提交請求
        $.ajax({
            type:'post',
            url:'/api/user/register',
            data:{
                username: $register.find('[name="username"]').val(),
                password: $register.find('[name="password"]').val(),
                repassword: $register.find('[name="repassword"]').val(),
                email: $register.find('[name="email"]').val()
            },
            dataType:'json',
            success: function (result) {
                console.log(result);
            }
        });

    })
})

后端代碼:

/**
 * Created by Administrator on 2018/4/16.
 */

var express = require('express');
var router = express.Router();

//統(tǒng)一返回格式
var responseData;

router.use(function (req, res, next) {
    responseData = {
        code: 0,
        message:''
    }

    next();
});
/*
* 用戶注冊
* 注冊邏輯
*
* 1.用戶名不能為空
* 2.密碼不能為空
* 3.兩次輸入密碼必須一致
* 
* 1.用戶名是否已經被注冊
*   數(shù)據(jù)庫查詢
* */
router.post('/user/register', function (req, res, next) {
    var username = req.body.username;
    var password = req.body.password;
    var repassword = req.body.repassword;
    var email = req.body.email;
    console.log(username,password,repassword,email);

    //用戶名是否為空
    if(username == ''){
        responseData.code = 1;
        responseData.message = '用戶名不能為空';
        res.json(responseData);
        return;
    }
    //密碼不能為空
    if(password == ''){
        responseData.code = 2;
        responseData.message = '密碼不能為空';
        res.json(responseData);
        return;
    }
    //   兩次輸入的密碼不一致
    if(password != repassword){
        responseData.code = 3;
        responseData.message = '兩次輸入的密碼不一致';
        res.json(responseData);
        return;
    }
    responseData.message = '注冊成功';
    res.json(responseData);
});

module.exports = router;

app.js:

/**
 * Created by Administrator on 2018/4/16.
 * 應用程序的啟動(入口)文件
 */
//加載express模塊
var express = require('express');
//加載模板處理模塊
var swig = require('swig');
//加載數(shù)據(jù)庫
var mongoose = require('mongoose');
//加載body-parser,用來處理post提交過來的數(shù)據(jù)
var bodyParser = require('body-parser');
//創(chuàng)建app應用=>NodeHS Http.createServer()
var app = express();

//設置靜態(tài)文件托管
//當用戶訪問的url以/public開始,那么直接返回對應__dirname + '/public'下的文件
app.use('/public', express.static(__dirname + '/public'));
// app.use('/static', express.static('public'));

//配置應用模板
//定義當前應用所使用的模板引擎
//第一個參數(shù),模板引擎的名稱,同時也是模板文件的后綴,第二個參數(shù)表示用于解析處理模板內容的方法
app.engine('html', swig.renderFile);
//設置模板文件存放的目錄,第一個參數(shù)必須是views,第二個參數(shù)是目錄
app.set('views', './views');
/*注冊所使用的模板引擎,第一個參數(shù)必須是view engine,第二個參數(shù)和app.engine這個方法中定義的模板引擎的名稱(第一個參數(shù))是一致的*/
app.set('view engine', 'html');
//在開發(fā)過程中,需要取消模板緩存
swig.setDefaults({cache: false});

//bodyparser設置
app.use( bodyParser.urlencoded({extended:true}) );

/*
 * 根據(jù)不同的功能劃分模塊
 * */
app.use('/admin', require('./routers/admin'));
app.use('/api', require('./routers/api'));
app.use('/', require('./routers/main'));

//監(jiān)聽http請求
mongoose.connect('mongodb://localhost:27017/blog',function (err) {
    if(err){
        console.log('數(shù)據(jù)庫連接失敗');
    }else{
        console.log('數(shù)據(jù)庫連接成功');
        app.listen(8081);
    }
});

HTML代碼:

<form method="post" action="" class="register">
                <div class="inset-register">
                    <label for="username">用戶名:</label><input type="text" id="username" name="username">
                </div>
                <div class="inset-register">
                    <label for="password">密碼:</label><input type="password" id="password" name="password">
                </div>
                <div class="inset-register">
                    <label for="repassword">確認密碼:</label><input type="password" id="repassword" name="repassword">
                </div>
                <div class="inset-register">
                    <label for="email">郵箱:</label><input type="email" id="email" name="email">
                </div>
                <div class="inset-register">
                    <button >注冊</button>
                </div>
            </form>

報錯問題:

clipboard.png

回答
編輯回答
心悲涼

url寫錯了 404報錯就是不存?。?/p>

2018年6月9日 14:46
編輯回答
汐顏

你的注冊不是應該請求 /user/register嘛,你現(xiàn)在的url是/main/register,當然404了
clipboard.png

2017年12月27日 08:20