5

ウェブサイトの検索機能を実装しようとしています。ユーザーが検索語foobarinputボックスに入力して送信すると、にリダイレクトされhttp://mydomain.com/search?query=foobarます。

問題::query URLからGETパラメータを取得し、それをバックエンドに送信して、結果の配列をJSON応答として取得するにはどうすればよいですか?私もこのようにすべきですか?

search以下の私の現在の試みでは、関数がトリガーされることすらありません。

ルーター

var AppRouter = Backbone.Router.extend({
    routes: {
        'search?query=:query': 'search'
        // ... and some other routes
    },

    search: function(query) {
        this.photoList = new SearchCollection();
        var self = this;
        this.photoList.fetch({
            data: {query: query},
            success: function() {
                self.photoListView = new PhotoListView({ collection: self.photoList });
                self.photoListView.render();
            }
        });
    }

});

var app = new AppRouter();
Backbone.history.start({
    pushState: true,
    root: '/'
});
4

4 に答える 4

5

この問題について、Backbone に対していくつかの問題が提起されています。これに適した既存のプラグインがあります。

https://github.com/jhudson8/backbone-query-parameters

または、現在、バックボーンのルート マッチングと一致するモック API でクエリ文字列パラメーターを使用しています。このように見えます

ルート

"/api/v2/application/:query"

クエリ

application: function(query) {
  var params = $.deparam(query.slice(1));
  // params.something...
}

目前の実際の問題について、どのようindex.htmlにサポートにリダイレクトしていpushStateますか?

于 2012-08-07T03:01:43.013 に答える
0

jQueryURLプラグインを介していつでもURLを読み取ることができます。それはうまくいきます。

https://github.com/allmarkedup/jQuery-URL-Parser

于 2013-03-13T22:37:17.060 に答える
-1

URL を読み取って GET パラメータを抽出する必要があるケースはほとんどありません。あなたは間違ったことをしていると思います。ここに私の選択肢があります:

1) アプリにページが 1 つしかない場合 (単一のアプリ ページ)、inputフィールドに入力したとき、またはヒットした後に結果を表示できます。submit

2) ユーザーを別のページにリダイレクトする場合は、データをブートストラップして、ページが読み込まれた後にbackbone結果をレンダリングするだけで、検索語を変更した場合にのみ他のリクエストを行うことができることを意味します

3)javascriptページのロード時にサーバーから直接初期化される変数を持つことができ、GET パラメータの操作がおそらく簡単です。

于 2012-08-07T15:55:10.123 に答える