Javascript 让History.js使用Ajax Solr

Javascript 让History.js使用Ajax Solr,javascript,ajax,apache,solr,history.js,Javascript,Ajax,Apache,Solr,History.js,我正在使用Solr4.3.0并为接口实现Ajax Solr。但是,Ajax Solr不会自动保存状态。有ParameterStore和ParameterHashStore方法,但它们不适用于传统浏览器。我使用我的google fu发现以下内容,但它没有按预期工作: …再加上一些资源,我想到了这个: <script> var Manager; (function ($) { Manager.setStore(new AjaxSolr.ParameterHashStore());

我正在使用Solr4.3.0并为接口实现Ajax Solr。但是,Ajax Solr不会自动保存状态。有ParameterStore和ParameterHashStore方法,但它们不适用于传统浏览器。我使用我的google fu发现以下内容,但它没有按预期工作:

…再加上一些资源,我想到了这个:

<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>

var经理;
(函数($){
Manager.setStore(新的AjaxSolr.ParameterHashStore());
Manager.store.exposed=['fq','q','start'];
Manager.init();
//建立变量
var History=window.History;//注意:我们使用的是大写字母H,而不是小写字母H
如果(!History.enabled){
//此浏览器已禁用History.js。
//这是因为我们可以选择是否支持HTML4浏览器。
返回false;
}
State=History.getState(),
//绑定到状态更改
bind(窗口,'statechange',function(){//注意:我们正在使用
statechange而不是popstate
//记录状态
var State=History.getState();//注意:我们使用的是History.getState()
事件状态
log('statechange:',State.data,State.title,State.url);
});
//日志初始状态
log('initial:',State.data,State.title,State.url);
})(jQuery);
但它不起作用。所有浏览器中的“前进”和“后退”按钮都会断开,控制台中不会记录任何内容

我遗漏了什么,或者v4.3.0现在天生就坏了,需要补丁吗


非常感谢您的帮助。谢谢大家!

我对AJAX Solr一无所知。但我想和你讨论一些事情可能会有所帮助

如果ajaxsolr的工作方式与普通AJAX相同,那么ajaxsolr将执行一些服务器端函数并在客户端输出(当然不会刷新实际页面)。因此,您应该将触发ajax调用的函数放在
History.Adapter.bind(窗口,'statechange',function()
)中

关于
State=History.getState();
它负责返回历史堆栈中推送状态的状态数据(url、标题、ajax参数)。请阅读github上关于hisroy.js的文档。请注意,您在代码中使用的是逗号而不是分号。此外,您要调用此函数两次。在
Bind
函数中只调用一次,以获取状态参数并在ajax调用中使用它们(以便在浏览浏览器后退按钮时刷新页面部分)

我建议您也读一读,也许它会帮助您理解ajax关于
Bind
的定位


祝你好运。

我对AJAX Solr一无所知。但我想和你讨论一些事情可能会有所帮助

如果AJAX Solr的工作方式与普通AJAX相同,那么AJAX Solr将执行一些服务器端函数并将其输出到客户端(当然不会刷新实际页面)。因此,您应该将触发AJAX调用的函数放在
History.Adapter.bind(窗口,'statechange',function()

关于
State=History.getState();
它负责返回历史堆栈中推送状态的状态数据(url、标题、ajax参数)。请阅读github上关于hisroy.js的文档。请注意,您在代码中使用的是逗号而不是分号。此外,您要调用此函数两次。在
Bind
函数中只调用一次,以获取状态参数并在ajax调用中使用它们(以便在浏览浏览器后退按钮时刷新页面部分)

我建议您也读一读,也许它会帮助您理解ajax关于
Bind
的定位


祝你好运。

此外,我忘了提到Ajax Solr没有公开URL参数,即使我添加了Manager.store.exposed代码。此外,我忘了提到Ajax Solr没有公开URL参数,即使我添加了Manager.store.exposed代码