2017-12-12 7 views
0

初めて使用するのはexpress.jsハンドルバーです。 私はこのフィールドをオートコンプリートする必要があります:<input type="text" id="myInput" autocomplete="on" placeholder="Search here...">。誰もがこのテキストに数字を付けると、ページ内のコンテンツを更新せずにPOSTを行い、GET後に行う必要があります。問題は、私がGETをするとき、ハンドルバーすべてのページをリフレッシュすることです。これは私が使用するコマンドです:express.jsハンドルバーを使用してすべてのページをリフレッシュせずにUIを更新する方法

res.render('home',{ items:typeOfCategory}); 

、これはHBSの構造である:

{{#if items}} 
<ul> 
{{#each items}} 
<li>{{this.title}}</li> 

{{/each}} 
</ul> 
{{/if}} 

私の質問は:すべてのページのリフレッシュを回避する方法? ありがとう

+0

ページの更新を避けるためにAJAXを使用してください – vibhor1997a

+0

@vibhor1997aはリフレッシュを回避する唯一の方法ですか? – nani

+0

はい、AJAX取得要求を送信できますクライアント側からあなたのサーバーは、レスポンス – vibhor1997a

答えて

0

ここでの問題は、毎回ブラウザに新しいリソースをリクエストさせてしまうことです。これはあなたのテンプレートをトリガーし、毎回新しいページを提供しています。

JSONを返す高速エンドポイントを作成し、AJAX(jQueryにある)または同様のライブラリを使用してそのエンドポイントにリクエストを送信することができます。 JSON形式のデータを返すことができます(res.json({}))。フロントエンドはその応答を解釈し、DOMに表示する方法を決定することができます。

この種の部分的な更新とは、フロントエンドJSがJSONを返すプログラム側のエンドポイントに沿っている必要があるところです。これはVuejsやAngularのような大きなフロントエンドフレームワークが繁栄している場所ですが、 jQueryがサーバーへのHTTP呼び出しを行い、JSONをフロントエンドに返すようにします

+0

でオートコンプリートデータを送信します。このタスクのリクエストは、httpを急行で行わなければならないため、expressとajaxを使用できますか? – nani

+0

@naniあなたのエクスプローラ、 'req'、' res'などを受け入れる関数は、res.renderを呼び出す必要はありません。これは単にレスポンスを返す一つの方法です。 'res.json(object)'を使います。ここで 'object'は返すデータです。これは、HTTPを介してAJAX関数に戻します。これはフロントエンドで使用できます。そう、はい、API側でExpressを使用し続けることができます。 docs - http://expressjs.com/en/4x/api.html#res.jsonをご覧ください –

関連する問題