2016-08-02 47 views
2

我想用pJax设置一个自定义标题,所以我可以在服务器端渲染东西。根据pjax docs,我可以使用pjax:beforeSend来设置xhr标题。如何使用PJAX设置自定义xhr头?

得到以下错误:

typeerror xhr.setrequestheader is not a function 

代码中,我已经试过:

$(document).on('pjax:beforeSend', function(xhr) { 
    if ($(event.target).data('rendertimeline') !== undefined) { 
     xhr.setRequestHeader('X-RENDERTIMELINE', 'true'); 
    } 
}); 

基本上,我加入了数据属性的某些环节,并会链接到检查该属性。如果它在那里,则在标准HTTP_X_PJAX标头旁边发送一个自定义HTTP标头。看起来相当简单,但我在某个地方短小。

+0

您是否尝试过记录'xhr'来确保它实际上是请求?我不熟悉jQuery处理XmlHttpRequests,但也许你没有得到你认为的你。 –

回答

1

看起来你已经开始使用PJAX最近第一个参数是不是XHR但事件对象补充说,它应该work.Don't知道他们为什么在文档跳过它,但最喜欢的活动开始,结束等将有事件作为第一个论点。

$(document).on('pjax:beforeSend', function(event,xhr, options) 
+0

我认为你在正确的轨道上。现在我看看我的代码,我确实看到我正在使用没有事件参数的'event',但是即使在事件添加到参数列表后,标题仍然没有设置。如果我添加,如果我将setRequestHeader代码添加到pJax的options.beforeSend函数(jquery.pjax.js中的第206行) - 它工作得很好..任何理由它可能不是从我自己的脚本调用,但从库内工作? – KFE

+0

这应该有效。它一直为我工作 – Viney