如何防止用户加载应该加载ajax的“子”页面

时间:2011-05-20 05:47:53

标签: asp.net ajax jquery

我有这个页面,Default.aspx作为“master”工作,并使用jQuery的load()函数加载子页面。像这样:

    <ul id="navigation>
        <li><a href="Item1.aspx"> Item 1</a></li>
         <li><a href="Item2.aspx"> Item 2</a></li>
    </ul>
    <div id="contend">
         <!-- Ajax loaded pages goes here -->
    </div>
    <div id="footer">
    </div>

问题是:当用户点击某个项目时,让我们说,选择在新窗口(选项卡)上打开,他显然会看到该页面中的项目,而不是导航,页脚和其他任何内容默认页面......

我正在寻找解决方法..

可能通过网址控制锚点?比如#item1

1 个答案:

答案 0 :(得分:2)

使用ajax发送附加参数。因此,您可以确定请求是否由ajax发出,并选择如何构建响应。

请求示例:

<script  type="text/javascript">
$(
   function()
   {
    $('#navigation a')
      .click(
              function(e)
              {
                e.preventDefault();
                $('#contend').load(this.href,{'isAjaxRequest':true});
              }
            );
   }
 );
</script>

如果用户按常规方式点击链接,也会发送一个名为“isAjaxRequest”的POST参数,你可以检查这个参数,如果存在,只输出#contend的片段,否则全部页面包括页眉,页脚等。