私はNode.js + MongoDBと他の関連ツールの基礎を学んでいますが、私は簡単なログイン画面で立ち往生しています。 index.htmlにリダイレクトするために "welcome!"というテキストだけが与えられています。私は別の場所(公式のAPI、チュートリアル、このページなど)を見てきましたが、私のエラーはまだ見えません。ノードJSでエクスプレスでリダイレクトすることができません
これが私のサーバーである:非既存の信任状をしようとしたとき、私は成功したエラー文字列「invalid_credentials」を返すことができ
$.ajax({
url: "/doLogin",
type: "GET",
data: {
user: $("#user").val().trim(),
pass: $("#pass").val()
}
}).done(function(data, textStatus, jqXHR) {
if(data == "invalid_credentials") {
$("#alert-wrong-credentials").show(100);
} else if(data == "ok") {
$("#alert-wrong-credentials").hide();
}
}).fail(function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
});
、および:
var http = require('http');
var hostname = 'localhost';
var port = 3000;
var mongojs = require("mongojs");
var express = require("express");
const HOME_URL = "/";
const LOGIN_URL = "/login";
const LOGIN_ACTION_URL = "/doLogin";
const INDEX_URL = "/index";
var app = express();
var db = mongojs("gus:[email protected]:27017/awesomeapp");
app.set("views", __dirname + "/public/views");
app.engine('html', require('ejs').renderFile);
app.get(HOME_URL, function(request, response) {
response.redirect(LOGIN_URL);
});
app.get(LOGIN_URL, function(request, response) {
response.render("login.html");
});
app.get(INDEX_URL, function(request, response) {
response.render("index.html");
});
app.get(LOGIN_ACTION_URL, function(request, response) {
db.users.find({
user: request.query.user,
pass: request.query.pass
}, function(err, doc) {
if(err) {
console.log(JSON.stringify(err));
response.end("An error ocurred");
return;
}
if(doc.length == 0) {
console.log("invalid_credentials");
response.end("invalid_credentials");
return;
}
console.log("user found: " + JSON.stringify(doc));
// This is my problem:
response.redirect(INDEX_URL);
});
});
app.listen(port);
、これは、ログインビューで行われます
user found: [{"_id":"58af514cb63980d2e8a51fed","user":"gus","pass":"123"}]
私は正しいユーザーデータを見ることができますindex.htmlページに直接アクセスしてください。
あなたが使用しようとしているリダイレクトは、ページにアクセスしている場合にのみ機能します。しかし、あなたはAjax経由でリクエストしています。つまり、 'date ==" ok "ブロックで、クライアントでリダイレクトする必要があります。document.location.href =" ... "' –
を@NikxDaに渡すと、何も起こりません。クリスGはまったく正しいです、私は非同期要求をして、バックにリダイレクトしようとしていますが、それは実際には意味がありません、私は "ok"フラグをクライアントとして提案してリダイレクトして、ほんとありがと! – Gustavo
私は完全にそれを逃した。恥ずかしい:D – NikxDa