$.get()
适用于我的代码但$.post()
没有。使用相同的代码......
当我使用$.post()
时,我的代码无法访问控制器。
我正在使用MVC(Sails.js)。我几乎阅读了每个问题和文件。但我找不到任何理由。
<div id="login-form-panel" class="form-login">
<form id="login-form" role="form">
<legend><h1>Login in..</h1></legend>
<input type="text" id="username" placeholder="User name" data-clear-btn="true" autocomplete="off" title="User name" autofocus required />
<input type="password" id="password" placeholder="Password" data-clear-btn="true" autocomplete="off" title="Password" required />
<input type="submit" id="btn-form-login" class="btn btn-primary btn-lg btn-block" style="margin-top:17px" value="Login">
</form>
</div>
// $('body').on('click', '#btn-form-login', function() {
$("#login-form").submit(function(e){
username = $("#username").val();
password = $("#password").val();
if(!console) {
console = {};
console.log = function() {};
}
console.log(username + " " + password);
$.post(
'/user/login',
{ username: username, password: password },
function(res) {
$.session.set('username', username);
$.session.set('password', password);
window.location = res;
},
"json"
)
.fail(function(xhr, statusText, error){
alert(xhr.status);
});
e.preventDefault();
});
module.exports = {
login: function(req, res) {
console.log("controller works..");
// To use mongo native query
User.native(function(err, collectionUser) {
if(err) { return err; };
if(!collectionUser) { return err; };
collectionUser
.find({'username' : req.param('username')})
.nextObject(function (err, user) {
if(err) {
console.log('db error');
res.send(500, 'db error');
return err;
};
if(!user) {
console.log('username error');
res.send(404, { error: 'username error'});
};
if(user) {
if(user.password === req.param('password')) {
// Log user in
req.session.authenticated = true;
req.session.User = user;
var oldDateObj = new Date();
var newDateObj = new Date(oldDateObj.getTime() + 3600000);
req.session.cookie.expires = newDateObj;
user.online = true;
collectionUser.save(user, {w: 1}, function(err, user_id) {
if(err) {
res.send(500, 'There is an error when accessing db\n' + err);
}
// Inform other sockets
User.publishUpdate(user_id, {
loggedIn: true,
id: user._id,
name: user.username,
action: ' giriş yaptı.'
});
res.send("/user/show/" + user['_id']);
});
} else {
console.log('password error');
res.send(400, 'password error');
//res.redirect('/');
}
};
});
});
},
}
答案 0 :(得分:1)
解决方案
1-配置Sails的跨站请求保护以使用POST方法 - 正如Zieaglar所述。因此;
首先转到config / csrf.js并将布尔值更改为false。和 其次,将以下代码添加到表单标记
中<input type='hidden' name='_csrf' value='<%= _csrf %>'>
2-删除POST中的dataType部分 - “json”