javascript中的全局变量始终为空并且从不更新

时间:2015-06-04 09:35:40

标签: javascript jquery asp.net-mvc

我有一个局部视图,当我在这个局部视图中点击一个链接时,我会在网址中添加一个hashset并发出ajax请求并更新视图;(我尝试的是当我单击后退按钮再次加载上一个局部视图)。问题是,在文档就绪时,如果hashet中有变化,我会检查每一秒 - 而且似乎每次检查checHash finction中的变量recenthash都是空的。可能是什么原因。

@model  MvcBeaWeb.GroupMenu    
    <div class="lc-container-contentmenu">
         foreach (MvcBeaDAL.WebServiceBeaMenu item in Model.MenuLeft)
         {                                                  
               @Html.ActionLink(@item.SpecialWord, "ImportShow", new { menuID = @item.ID, articlegroupID = @item.ArticlegroupID })                                
         }                  
    </div>

    <script>
        var recentHash = '';
        function hashChange() {
            var page = location.hash.slice(1);
            if (page != "") {        
                jQuery.ajax({
                    url: page        
                }).done(function (data) {
                    $("#importPartUpdate").html(data);
                }) 
            }
        }

        function checkHash() {
           var hash = location.hash;
            if (hash) {

                if (hash == recentHash) {
                    return;
                }
                recentHash = hash;
               hashChange();
            }
        }       

        $(function () {                
            $('.ajaxLinks a').click(function (e)
            {
                location.hash = $(this).attr('href')
                return false;
            })
            setInterval(checkHash, 1000);           

        });
    </script>

1 个答案:

答案 0 :(得分:0)

这是范围界定的问题。

var recentHashrecentHash(在window.hash上定义)的范围不同。

http://ryanmorr.com/understanding-scope-and-context-in-javascript/