Node.js、Express、およびangularを使用してPOST要求をリダイレクトしようとしています。私は次のようにフォームを使用しての標準的な方法があります認識しています:Node.jsと角でリダイレクト
index.ejs
<!DOCTYPE html>
<html>
<head>
<title>Redirect Example</title>
</head>
<body>
<p>INDEX PAGE</p>
<form action="/redirect" method="post">
<button type="submit">CLICK</button>
</form>
</body>
</html>
test.ejs
<!DOCTYPE html>
<html>
<head>
<title>Redirect Example</title>
</head>
<body>
<p>YAY REDIRECTED</p>
</body>
</html>
app.js
var fs = require('fs');
var https = require('https');
var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
res.render('index');
});
app.post('/redirect', function(req, res){
res.redirect('/test');
});
app.get('/test', function(req, res) {
res.render('test');
});
var port = process.env.PORT || 1337;
app.listen(port, function(){
console.log('http://localhost:' + port + '/');
});
このメソッドは、POST要求を処理するフォームを使用するため、ページを自動的に「テスト」ルートにリダイレクトします。
ただし、角度のアプローチを使用すると、ページが自動的にリダイレクトされません。どうすればいい?
index.ejs
<!DOCTYPE html>
<html ng-app="project">
<head>
<title>Redirect Example</title>
<script src="/javascripts/jquery/jquery.js"></script>
<script src="/javascripts/angular/angular.js"></script>
<script src="/javascripts/angular/angular-route.js"></script>
<script src="/javascripts/main.js"></script>
</head>
<body ng-controller="MainController">
<button type="submit" ng-click="submit()">CLICK</button>
</body>
</html>
main.js
var app = angular.module('project', []);
app.controller('MainController', ['$scope', '$http', function ($scope, $http) {
$scope.submit = function() {
$http.post('/redirect');
}
}]);
AngularJSルーティングがハッシュに基づいている間のNode.jsサーバによって作成
ありがとうございました。上記のコードにどのように使用するのか、簡単な例を挙げてください。 – slim1801
'res.redirect( '/ test')の実際のリダイレクトの代わりに、私は通常ステータスコードを送信してからAngularJSでアクションを実行する方が好きです。 – Nesh
私はNeshに同意します。 Angularはクライアントとして独自のモジュールで単独で動作するため、内部からのリダイレクトを処理します。エクスプレスエンドポイントを変更して代わりにステータスコードを返すようにして、$ http.post関数**の成功コールバックの内部から**リダイレクトするために '$ window.location.href = value'のようなものを使用してください。 – SamuelN