【问题标题】:Disable AJAX on only home page with jQuery Mobile仅使用 jQuery Mobile 在主页上禁用 AJAX
【发布时间】:2013-03-22 15:49:50
【问题描述】:
我正在寻找一种仅在我的项目主页上禁用 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>
提前致谢。
【问题讨论】:
标签:
asp.net-mvc
jquery-mobile
【解决方案1】:
不存在这样的东西。把 AJAX 想象成一个小型浏览器:如果 URL 返回响应,它就可以访问它。但是,如果检测到“AJAXy”请求标头,可能可以根据 Home 操作中存在的请求标头进行分支并返回类似 403 Forbidden 的内容。
例如,jQuery 发送一个X-Requested-With: XMLHttpRequest 标头及其请求。如果此标头存在,则请求很可能来自 jQuery 中的 AJAX 方法(或可能使用相同方法的其他库)。如果需要,您还可以通过 AJAX 请求传递您自己的自定义标头。但是,所有这些都是特定于实现的,因此它在很大程度上取决于您团队中的所有开发人员以某种方式做事。例如,如果有人使用标准 JavaScript XHR 对象发出请求,那么 X-Requested-With 标头将不存在。或者,如果您使用自定义标头,则每个开发人员都需要每次或再次传递该标头,逻辑就会崩溃。
如果您的业务规则规定不应通过 AJAX 请求主页,则处理该问题的最佳方法是在 业务 级别,即策略。您在实际代码中尝试的任何事情都可以轻松解决。