将数据附加到PJAX请求

Kev*_*vin 8 ajax pjax

我正在使用PJAX,它适用于简单的示例,但我需要能够使用PJAX请求执行一些高级操作.

  1. 我想在每个PJAX请求中附加一些数据.我想追加的数据实际上是一个对象数组.见下面的例子.
  2. 我可能需要使用POST而不是GET来进行ajax调用.
  3. 我可能需要将content-type更改为"application/json".

我有以下......

var people = [{ first: "John", last: "Doe" }, { first: "Jane", last: "Smith" }];

$("a.sheet-link").pjax("#content");

$('#content').on('pjax:beforeSend', function (e, jqXHR, settings) {

  // Modify ajax request here?
  // Would like to append the people array to data
  // Would like to POST rather than GET
  // May need to change content-type to "application/json".

});
Run Code Online (Sandbox Code Playgroud)

我尝试了各种方法......

  • 使用jQuery.ajaxSetup设置一些默认值(我可以设置数据,但是不会附加_pjax数据元素;我试图将类型设置为POST,但这并没有坚持.)
  • 尝试修改beforeSend处理程序中的jqXHR对象
  • 尝试修改beforeSend处理程序中的设置对象

所有尝试都给了我各种问题.

我不知道为什么这么难.任何帮助将不胜感激!

Sey*_*sen 7

由于文档指出:

您也可以直接调用$ .pjax.它的行为很像$ .ajax,甚至返回相同的东西并接受相同的选项.

我会尝试以下方法:

var people = [{ first: "John", last: "Doe" }, { first: "Jane", last: "Smith" }];

$('a.sheetlink').click(function(e) {
  e.preventDefault();
  $.pjax({
    type: 'POST',
    url: $(this).href,
    container: '#content',
    data: people,
    dataType: 'application/json'
  })
});
Run Code Online (Sandbox Code Playgroud)