我花了一段时间调试为什么我的pjax设置不起作用 - 这是我目前所知的。 2个请求在同一秒内发生。这很奇怪,因为我在前端设置了超时3秒。
[02/Nov/2014 05:42:26] "GET /i/feed/?_pjax=%23pjax HTTP/1.1" 200 0
[02/Nov/2014 05:42:26] "GET /i/feed/ HTTP/1.1" 200 62358
在客户端:
$(document).ready(function() {
$(document).pjax('a[data-pjax]', '#pjax',
{'timeout': 3000});
});
在html上(存在pjax目标):
<div id="pjax" class="cl-mcont">
{% block content %}
{% endblock %}
</div>
此外,永远不会检测到HTTP标头。我有这个片段:
base_template = ('pjax.html' if request.META.get('HTTP-X-PJAX')
else 'base_v2.html')
base_template始终是base_v2.html。
我很困惑为什么pjax能够修改url,并导致额外的请求被发送,但同时,没有正确设置标题。
任何想法都会受到赞赏。
答案 0 :(得分:2)
我认为HTTP
标题应该是HTTP_X_PJAX
(下划线连接而不是破折号)而不是HTTP-X-PJAX
。正如django docs所述:
请求中的任何HTTP头都将转换为META密钥,方法是将所有字符转换为大写,用下划线替换任何连字符,并在名称中添加HTTP_前缀。因此,例如,名为X-Bender的标头将映射到META密钥HTTP_X_BENDER
对于双事件(请求)触发,请确保您没有将a[data-pjax]
选择器与pjax
绑定两次。绑定应该只进行一次。
答案 1 :(得分:2)
添加到您的视图
print request.META
只是看看你在标题中得到了什么。