将数据附加到PJAX请求

时间:2012-04-21 15:59:27

标签: ajax pjax

我正在使用PJAX,它对于简单的示例非常有用,但我需要能够使用PJAX请求做一些高级操作。

  1. 我想在每个PJAX请求中附加一些数据。我想追加的数据实际上是一个对象数组。见下面的例子。
  2. 我可能需要使用POST而不是GET来进行ajax调用。
  3. 我可能需要将内容类型更改为“application / json”。
  4. 我有以下......

    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处理程序中的设置对象

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

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

1 个答案:

答案 0 :(得分:7)

由于documentation指出:

  

您也可以直接拨打$ .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'
  })
});