Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在asp.net内核中实现PJAX时,Request.Headers[";X-PJAX";]总是空的?_Javascript_Jquery_Ajax_Asp.net Core_Pjax - Fatal编程技术网

Javascript 为什么在asp.net内核中实现PJAX时,Request.Headers[";X-PJAX";]总是空的?

Javascript 为什么在asp.net内核中实现PJAX时,Request.Headers[";X-PJAX";]总是空的?,javascript,jquery,ajax,asp.net-core,pjax,Javascript,Jquery,Ajax,Asp.net Core,Pjax,我试图在asp.net内核中实现pjax,但Request.Headers[“X-pjax”]始终为空。PJAX文档是- My_Layout.cs html代码: <head> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <script src="~/js/jquery.pjax.js"></script> <script type="te

我试图在asp.net内核中实现pjax,但
Request.Headers[“X-pjax”]
始终为空。PJAX文档是-

My_Layout.cs html代码:

<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="~/js/jquery.pjax.js"></script>
<script type="text/javascript">
    $(function () {
        // pjax
        $('ul a').pjax('#main')
    })
</script>
</head>

<body>
<ul>
  <li><a href="/" class="current">MAIN PAGE</a></li>
  <li><a href="/Home/About">About</a></li>
</ul>

<div id="main">@RenderBody()</div>
</body>
我的控制器索引和关于操作:

public IActionResult Index()
    {
        if (string.IsNullOrEmpty(Request.Headers["X-PJAX"]))
            ViewBag.PJAX = false;
        else
            ViewBag.PJAX = true;
        return View();
    }

public IActionResult About()
    {
        if (string.IsNullOrEmpty(Request.Headers["X-PJAX"]))
            ViewBag.PJAX = false;
        else
            ViewBag.PJAX = true;
        return View();
    }
问题是我得到了
Request.Headers[“X-PJAX”]
always”“?为什么

请帮忙。
谢谢

这是因为您正在为Pjax选择一个空容器。让我们检查一下您的HTML结构:

<body>
    <ul>
        <li><a href="/" class="current">MAIN PAGE</a></li>
        <li><a href="/Home/About">About</a></li>
    </ul>
    <div id="main">@RenderBody()</div>
</body>
注意
#main
不是
ul
的子项

要修复代码,只需尝试以下操作:

$(document).pjax('#main')
或者,如果要自定义选择器,请尝试以下示例:

$(document).pjax('a', '#main')
$(document).pjax('ul a', '#main')

这是因为您正在为Pjax选择一个空容器。让我们检查一下您的HTML结构:

<body>
    <ul>
        <li><a href="/" class="current">MAIN PAGE</a></li>
        <li><a href="/Home/About">About</a></li>
    </ul>
    <div id="main">@RenderBody()</div>
</body>
注意
#main
不是
ul
的子项

要修复代码,只需尝试以下操作:

$(document).pjax('#main')
或者,如果要自定义选择器,请尝试以下示例:

$(document).pjax('a', '#main')
$(document).pjax('ul a', '#main')

谢谢你。它解决了我的问题。但是,现在每当单击链接时,操作方法将被调用2次,而不是一次。为什么会发生这种事?@yogihosting听起来好像触发了两次事件。你能给我看一下完整的代码吗?我现在把所有的代码都添加到问题中了。请看一看。@yogihosting可能的原因:短暂的超时导致取消。你能不能通过:`$(document).pjax(“a”、“#main”、{timeout:4000})`@yogihosting添加更长的超时时间?我已经将本地代码推到了。如果您还有任何问题,请随时与我联系。谢谢。它解决了我的问题。但是,现在每当单击链接时,操作方法将被调用2次,而不是一次。为什么会发生这种事?@yogihosting听起来好像触发了两次事件。你能给我看一下完整的代码吗?我现在把所有的代码都添加到问题中了。请看一看。@yogihosting可能的原因:短暂的超时导致取消。你能不能通过:`$(document).pjax(“a”、“#main”、{timeout:4000})`@yogihosting添加更长的超时时间?我已经将本地代码推到了。如果您有任何进一步的问题,请随时与我联系。