Skip to content

Instantly share code, notes, and snippets.

Created May 4, 2016 10:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/313b68b31de00cb4dc0816eede678131 to your computer and use it in GitHub Desktop.
Save anonymous/313b68b31de00cb4dc0816eede678131 to your computer and use it in GitHub Desktop.
前端的代码:
<script type="text/javascript">
$(document).ready(function () {
$("#submitInfo").click(function () {
var form = $("#login_form");
var data = {
username: form.find("#inputUsername").val(),
password: hex_md5(form.find("#inputPassword").val())
}
$.ajax({
type: 'post',
url:'/signin',
data: data,
success: function(data) {
console.log('success');
console.log(JSON.stringify(data));
}
})
});
});
</script>
后端express的代码:
'''
router.post('/', function (req, res, next) {
console.log(req.body);
controller.user.username = req.body.username;
controller.user.password = req.body.password;
controller.user.isRemember = req.body.isRemember;
controller.api = new client(controller.user.username,
controller.user.password);
//res.json(req.body);
controller.api.getAccessToken(function (token, err) {
if (!err) {
res.json({success:1});
console.log(token);
} else {
res.json({error:err});
console.log(err);
}
});
});
getAccessToken需要访问其他的url。
@nluo
Copy link

nluo commented May 4, 2016

always error first in nodejs.
controller.api.getAccessToken(function (error, token) {

@xqin
Copy link

xqin commented May 5, 2016

HTML代码(保存到 www目录, 文件名为 index.html):

<form action="" id="login_form">
    <input type="text" id="inputUsername" value="name" />
    <input type="text" id="inputPassword" value="passsss" />
    <input type="button" value="submit" id="submitInfo" />
</form>
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>

<script type="text/javascript">
    $(document).ready(function () {
        $("#submitInfo").click(function () {
            var form = $("#login_form");

            var data = {
                username: $("#inputUsername").val(),
                password: ($("#inputPassword").val())
            };

            $.ajax({
                type: 'post',
                url:'/signin',//你在 v2ex 上发的代码里, 这个地方并不是请求的你 nodejs 中监听的 路由, 所以这里要改成 /sigin
                data: data,
                success: function(data) {
                    console.log('success');
                    console.log(JSON.stringify(data));
                }
            });

            return false;
        });
    });
</script>

//NPM执行的命令

npm install express
npm install body-parser

nodejs 的代码
app.js

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

var bodyParser = require('body-parser');

//伪造你的那个 Controller
var controller = {
    user:{},
    api:{
        getAccessToken:function(cb){
            setTimeout(function(){
                cb('token....');
            }, 400);
        }
    }
};

router.use(express.static('www'));
router.use(bodyParser.json()); // for parsing application/json //必须, 否则你在 使用 req.body 的时候, 得到的是  undefined
router.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

router.post('/signin', function(req, res, next) {
    console.log(req.body);
    controller.user.username = req.body.username;
    controller.user.password = req.body.password;
    controller.user.isRemember = req.body.isRemember;
    //controller.api = new client(controller.user.username, controller.user.password);

    //res.json(req.body);

    controller.api.getAccessToken(function(token, err) {
        if (!err) {
            res.json({
                success: 1
            });
            console.log(token);
        } else {
            res.json({
                error: err
            });
            console.log(err);
        }
    });
});

var server = router.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

运行效果:
image

image

以上代码亲测 是可行的.

@yimity
Copy link

yimity commented May 5, 2016

代码没问题,把你报错的详细信息发上来。

@elrrrrrrr
Copy link

router.post('/', function (req, res, next) 

路由配错了?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment