Javascript 为什么在asp.net内核中实现PJAX时,Request.Headers[";X-PJAX";]总是空的?
我试图在asp.net内核中实现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
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添加更长的超时时间?我已经将本地代码推到了。如果您有任何进一步的问题,请随时与我联系。