1

私は Solr 4.3.0 を使用しており、インターフェイスに Ajax-Solr を実装しています。ただし、Ajax-Solr は状態を自動的に保存しません。ParameterStore と ParameterHashStore メソッドがありますが、レガシー ブラウザーでは機能しません。google-fu を使用したところ、次のものが見つかりましたが、意図したとおりに機能しません。

https://github.com/evolvingweb/ajax-solr/pull/23

...さらにいくつかのリソースを使用して、これを思いつきました:

<script>
var Manager;
(function ($) { 
Manager.setStore(new AjaxSolr.ParameterHashStore()); 
Manager.store.exposed = [ 'fq', 'q', 'start' ]; 
Manager.init(); 

// Establish Variables
var History = window.History; // Note: We are using a capital H instead of a lower h
    if ( !History.enabled ) {
         // History.js is disabled for this browser.
         // This is because we can optionally choose to support HTML4 browsers or not.
         return false;
     }
     State = History.getState(),

    // Bind to State Change
    History.Adapter.bind(window,'statechange',function(){ // Note: We are using   
statechange instead of popstate
        // Log the State
       var State = History.getState(); // Note: We are using History.getState() instead 
of event.state
        History.log('statechange:', State.data, State.title, State.url);
    });

    // Log Initial State
    History.log('initial:', State.data, State.title, State.url);

})(jQuery);
</script>

しかし、うまくいきません。[進む] ボタンと [戻る] ボタンはすべてのブラウザーで壊れており、コンソールには何も記録されません。

何が不足していますか、それとも v4.3.0 は現在本質的に機能していないため、パッチが必要ですか?

どんな助けでも大歓迎です。ありがとうございました!

4

1 に答える 1

1

AJAX-Solr については何も知りません。しかし、あなたといくつかのことを話し合うことは助けになると思います。

AJAX-Solr が通常の AJAX と同じように動作する場合、AJAX-Solr はサーバー側の関数を実行し、それをクライアント側で出力します (もちろん、実際のページを更新する必要はありません)。結果として、ajax 呼び出しをトリガーする関数を .xml 内に配置する必要がありますHistory.Adapter.bind(window,'statechange',function()

それについてState = History.getState();は、ヒストリ スタック (url、タイトル、ajax パラメータ) にプッシュされた状態の状態データを返す責任があります。github の hisrory.js に関するドキュメントを読んでください。コードでセミコロンの代わりにコンマを使用していることにも注意してください。さらに、この関数を 2 回呼び出しています。関数内で一度だけ呼び出してBind状態パラメーターを取得し、それらを ajax 呼び出しで使用します (ブラウザーの戻る/進むボタンをナビゲートしているときにページの一部を更新するため)。

ブラウザの戻る/進むボタンが奇妙な動作を示していることもお読みになることをお勧めします。History.jsについては、ajax の位置付けを理解するのに役立つかもしれませんBind

幸運を。

于 2013-05-27T23:34:22.320 に答える