使用History.js的HTML5 pushState.无法从State.data检索数据

我可以将数据设置为History.js的State.data,如下所示:
var pushStateData = {};

function RetrieveSearchResults(type,url,searchData) {//,showResetButton,controlToFocus,navDirection) {

    pushStateData = {
        SearchType : type,SearchData : searchData,};

    RetrievePageResults(true,pushStateData);
}

function RetrievePageResults(pushNewUrl,pushStateData) {
    navigationInProgress = true;
    if (pushNewUrl) {
        if (window.History) {
                window.History.pushState(pushStateData,null,url);                                            
        }

        $.get(url,pushStateData.SearchData,function (reply) {
            $("#search-results").html(reply);
            navigationInProgress = false;            
        });
    }

如果我在window.History.pushState语句中设置断点,在Chrome中,我可以清楚地看到pushStateData具有所需的值.

但是,当我尝试检索数据时:

$(window).bind("statechange",function (e) {
        if (!navigationInProgress) { 
            var State = window.History.getState();

            if (window.console && window.console.log) {
                console.log("popstate",State,window.location.href);
            }

            RetrievePageResults(false,State.cleanUrl,State.data);
        }
    });

当我在RetrievePageResults语句上设置断点时,
State.data对象不再具有我设置的任何值. State.data是定义的,不是null,但它是一个没有任何明显值的空对象.

谢谢,
斯科特

解决方法

我没有看到State.data有什么问题,当你发出pushState时,请确保你调用History.js方法:
History.pushState({state:1},"State 1","?state=1");

哪里:

>第一参数=>数据
>第二参数=>名字
>第三参数=>网址

看来你没有通过状态,只有当你调用History.pushState时才会出现数据.当您直接访问URL(/?state = 1)时,状态中没有数据,只有在通过History.pushState推送状态时向后/向前导航时才能使用数据.

旁注:确保您的navigationInProgress变量已修复,您不希望它在那里停滞.在侦听错误回调时,$.get请求失败时重置它.当pushNewUrl为false时,重置navigationInProgress属性.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


js中event的用法
js中能调用python吗
js中split的用法
js怎么设置边框样式
js中截取字符串的方法
js中innerhtml的用法
javascript的成熟分类方式有哪些
js中document是什么意思
js怎样让div中的文字居中
js中怎样定义一个对象
javascript的成熟分类介绍
js中parseint什么意思
js中字符串如何排序
void在js中是什么意思
js中如何定义函数
js中arguments是什么意思
js中什么是同步和异步
js中如何sleep一秒
js中ui函数是什么意思
js中如何遍历数组