8

我正在使用 PJAX,它非常适合简单的示例,但我需要能够使用 PJAX 请求做一些高级的事情。

  1. 我想在每个 PJAX 请求中附加一些数据。我要附加的数据实际上是一个对象数组。请参见下面的示例。
  2. 我可能需要使用 POST 而不是 GET 进行 ajax 调用。
  3. 我可能需要将内容类型更改为“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".

});

我尝试了各种方法...

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

所有的尝试都给我带来了各种各样的问题。

我不确定为什么这如此困难。任何帮助将不胜感激!

4

1 回答 1

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'
  })
});
于 2012-04-30T23:38:27.550 回答