あなたは概念を誤解しているようです。私はあなたに講義をしましょう。 ;)
基本。 Cookieはクライアント側に格納されます。したがって、jQuery $.cookie('userId')
を使用すると、このスクリプトがクライアント側で実行されたときに取得されます。
しかし、ここではサーバー側でJADEテンプレートエンジンを使用しています。だからあなたはまだクライアント側にページを送っていない。だから、どのクッキーを検索したいですか?あなたはサーバーにいるので、クッキーはありません。
さらにご覧ください。サーバー側にいるので、$.cookie('userId')
を実行するとエラーがスローされます。 $
オブジェクトはありません。 jQueryをサーバー側で使用することはできません(実際は可能ですが、現時点では無関係です)。あなたのルートシステムに$
オブジェクトを定義しましたか?または、ヘルパー$
を定義しましたか?私はそうは思わない。
Express + JADEチュートリアル。ここでは簡単なチュートリアルをしましょう。あなたが変数として使用することができますcode
index.jade
で今
app.get('/', function(req, res){
res.render('index.jade', { code: 500 });
});
あなたは(app.js
中)のビューを持っていると言います。
// some code
- if (code == 500)
input(type='submit', disabledm, value='Move')
- else
input(type='submit', value='Move')
// some code
を、今では動作します:だからあなたはこのような例のためにあなたのindex.jade
を書くことができます!テンプレートをあらかじめ定義しておけば、JavaScript関数をテンプレートで使用することもできます。例えば
app.helpers({
positive: function(no) { return no > 0; }
});
(あなたapp.js
に)、その後index.jade
テンプレートで、あなたは
- if (positive(-13))
input(type="submit")
を使用しても、クッキーためにCookieまたはないためにこれら二つの概念
- if (positive(code))
// do some stuff
を組み合わせることができます。本当にクッキーを使用する必要がある場合(セッションやCSRFを除いてはいけません)、クライアント側のJavaScriptを使用する必要があります。これは、あなたがこの
$(document).ready(function() {
if ($.cookie('userId') == userId) {
// do something like append input to some holder
}
});
ようmy-script.js
をindex.jade
ファイルに(jQueryの後)
script(src='my-path/my-script.js')
を追加して記述する必要がある。しかし、そのソリューションにはいくつかの問題があることを意味します。最初:userId
(平等の第2部分)とは何ですか? index.jade
に事前定義する必要があります。例えば
script
var userId = #{ user.id };
を使用して、ルート内user
オブジェクトを追加します。 2番目:クッキーはローカル変数です。それらを設定するには、あなたが望むものではない追加のサーバーコードが必要です。これにより、アプリをより固く保つことができます。最後に、ユーザーのIDをクッキーに保存することは意味がないようです。最終的なユーザーは自分のIDであることを知る必要はありません。サーバーは知っている必要があります!セッションシステムはここで便利です。
最終ノート。あなたが書いたコードは、サーバーサイドとクライアントサイドのJavaScriptを区別できないことを示しています。あなたの問題に対する解決策は、学び、学び、学ぶことです。 JADE、Express、Node.jsに関するチュートリアルやすべてを読んでください。
おかげのようにサーバにアクセスすることができるはずです。あなたは非常に正しいです、私はクライアント側とサーバー側の間に混乱している...それは根本的な問題でした。これを指摘してくれてありがとう...素晴らしい! – user644745
素晴らしい答えです、ありがとう! – kaxi1993