使用jquery-pjax时如何强制一个链接执行整页加载

时间:2017-01-14 02:49:24

标签: javascript jquery html pjax

我的应用程序使用jquery-pjax,它适用于所有页面,除了内容包含一些<脚本>由于jquery-pjax只是将返回的内容放在元素中而不执行内容中的元素,因此未执行的标记。

我想解决这个问题。当用户通过单击它来尝试加载此页面时,我只想绕过jquery-pjax功能并执行整页加载。我怎么能做到这一点?我可以以某种方式在元素上表明这一点吗?

我看到github上有多种jquery-pjax。我正在使用“defunkt”版本here。还有yiisoft版本here。 Yiisoft版本是从defunkt版本开始的。

我使用的是defunkt版本,但是yiisoft版本似乎有一个内置功能来抑制第二个答案中描述的链接的pjax功能。

3 个答案:

答案 0 :(得分:1)

绕过jquery-pjax功能的一种方法是创建<a>元素,以便它使用onclick()事件来加载页面而不是href。

使用jquery-pjax的链接:

<a href="/page_url">Pjax Page</a>

绕过jquery-pjax的链接:

<script language="javascript" type="text/javascript">
    function load_page() {
        window.location.href = "/page_url";
    }
</script>
<a onclick="load_page();">non-Pjax Page</a>

答案 1 :(得分:0)

如果您正在使用yiisoft jquery-pjax,则可以添加&#34; data-pjax =&#39; 0&#39;&#34;作为&lt;的属性a&gt;用于抑制pjax功能的元素。 pjax的defunkt version中未提供此功能。

答案 2 :(得分:0)

我之前给出的两个答案需要更改&lt; a&gt;与pjax无法正常工作的页面元素。这种方法的缺点是可能很难找到每个&lt; a&gt;在您的网站上链接到特定页面。

另一种运行服务器端的方法,不需要更改&lt; a&gt; elements是在准备对受影响页面的响应时尽早删除标题标记“X-PJAX”。这是Asp.Net MVC的这个想法的实现:

创建扩展方法:

Imports System.Runtime.CompilerServices

Module PjaxExtension

    <Extension()>
    Public Sub DisablePjax(ByVal c As Controller)
        c.Request.Headers.Remove("X-PJAX")
    End Sub

End Module

在顶部的控制器中:

Imports MyWebSite.PjaxExtension

在控制器的操作方法中:

DisablePjax()