使用jQuery Mobile仅在主页上禁用AJAX

时间:2013-03-22 15:49:51

标签: asp.net-mvc jquery-mobile

我正在寻找一种方法来简单地禁用我的项目主页上的AJAX。我正在使用MVC,因此在许多领域都有到主页的链接。我想要整个网站的AJAX,但不是在加载主页时。原因是因为我使用脚本动态设置UI,它包含对象,当页面加载为硬刷新时加载这些对象,但是当jQuery Mobile转换到页面时没有。我正在寻找一个解决方案,我可以在主页上添加一个脚本,以便在引用时禁用AJAX。但是仍然有AJAX用于其余的解决方案。这是一个非常独特的情况,但我没有发现任何可能阻止通过AJAX加载一个页面的东西。有谁知道吗?

如果可以,我只想在主页上做这样的事情

<script>
$(document).bind(function(){
    [some call to disable this page from being loaded with AJAX]
});
</script>

提前致谢。

1 个答案:

答案 0 :(得分:0)

不存在这样的事情。将AJAX想象成一个小型浏览器:如果URL返回响应,它可以访问它。但是,如果检测到“AJAXy”请求标头,则可能可以在Home操作中分支请求标头,并返回类似403 Forbidden的内容。

例如,jQuery会发送X-Requested-With: XMLHttpRequest标头及其请求。如果存在此标头,则该请求很可能来自jQuery(或其他可能使用相同方法的库)中的AJAX方法。如果需要,您还可以使用AJAX请求传递自己的自定义标头。但是,所有这些都是特定于实现的,因此它几乎取决于团队中的所有开发人员以某种方式执行操作。例如,如果某人使用标准JavaScript XHR对象发出请求,则X-Requested-With标头将不存在。或者,如果您使用自定义标头,每个开发人员都需要每次都传递该标头,或者再次,逻辑会崩溃。

如果您的业务规则规定不应通过AJAX请求主页,则处理该主页的最佳方式是业务级别,即策略。您在实际代码中尝试的任何内容都可以轻松解决。