Jquery菜单状态

时间:2011-02-22 18:07:22

标签: ajax jquery asp.net-ajax

这就是我要做的事情......这很简单,显然我正在做的事情肯定有些不对,但是我看不到它,希望你能帮助我...我有一个垂直的Jquery菜单(使用手风琴),我想记住它的状态。所以,我在我的母版页中有这个代码来处理手风琴上的每次点击:

$(document).ready(function () {
    var toOpen = <%= MySessionInfo.Current.MyMenu %>;
    if(toOpen != -1){            
        $("#accordionMenu").accordion( "activate", toOpen); 
    }

    $("#accordionMenu").click(function (){
        var activate = $("#accordionMenu").accordion("option", "active");
        if (activate != false) {
            $.getJSON("/Account/SetMenu", { CurrentMenu: activate }, function (j) {});
        }
    });
 });

然后我将部分视图与菜单定义为一组div,其中每个部分有一个ul和许多li链接。

在我的帐户控制器中,我使用了这个:

public void SetMenu(int CurrentMenu)
{
    MySessionInfo.Current.MyMenu = CurrentMenu;    

}

发生了什么?:它在开始时工作正常并保存状态正常但是当下一页加载时它不会刷新状态。我也观察到正好在从视图中调用“SetMenu”之后,在进入被调用视图之前,这个错误发生了:

未捕获的异常:[Exception ...“组件返回失败代码:0x80040111(NS_ERROR_NOT_AVAILABLE)[nsIXMLHttpRequest.getAllResponseHeaders]”nsresult:“0x80040111(NS_ERROR_NOT_AVAILABLE)”location:“JS frame :: http://localhost:20984/Scripts/jquery-1.4.2.min.js :: anonymous ::第7207行“数据:否]

我希望你能尽快帮我解决这个问题......问候!

2 个答案:

答案 0 :(得分:0)

var toOpen = '<%= MySessionInfo.Current.MyMenu %>';

答案 1 :(得分:0)

解决方案比问题本身更奇怪。我创建了一个javascript函数“updateMenu()”,它调用jquery“activate”,我在body的末尾调用它作为window.onload = updateMenu:

function updateMenu(){
    var toOpen = <%= MySessionInfo.Current.MyMenu %>;
    if(toOpen != -1){            
        $("#accordionMenu").accordion( "activate", toOpen); 
    }
}

window.onload=updateMenu;

我不确定为什么它会这样,而不是另一种,但它对我来说很好。