使用ajax阻止导航页面刷新

时间:2017-01-08 22:03:20

标签: javascript jquery html ajax asp.net-mvc

我在MVC 5项目中工作,我想使用ajax

更改我的内容
<script>


    $(document).ready(function () {

        window.onpopstate = function (e) {
            if (e.state) {
                $('.body-content').html(e.state.html);
                document.title = e.state.pageTitle;
            }
        };


        $("a").click(function (e) {
            e.preventDefault(); \\ currently placed here, but 
            var me = $(this);
            $('.body-content').fadeOut(300, function () {

                var url = "" + me.attr("href");

                if (!url || url.match("^http")) {
                    debugger;
                    return true;
                }
                if (!url || url === "/") {
                    url = "Home/Index";
                }
                $('.body-content').load(url, function () {

                    $('.body-content').fadeIn(300);
                    //window.history.pushState(
                    //    null,
                    //    'Terram Novum', // new page title
                    //    url// new url
                    //);
                });
                return false;
            });




        });

    });
</script>

这是我到目前为止编写的代码,但有时它仍然会刷新,我无法弄清楚模式或原因。

代码放在_layout.cshtml页面中,我没有从模板中做太多改动。任何人都可以帮助我或找出更好的方法吗?

哦,如果你可以帮我弄清楚当我从一个地区到另一个地区的时候,我会得到奖励积分。

1 个答案:

答案 0 :(得分:0)

此代码仅适用于您的首页加载,因为它放在$(文档).ready()中,但随后,一旦您离开第一页并在另一页中加入链接,您就会#39 ; ll必须再次将事件监听器附加到您的所有标签上,因为它们最初并不存在。