2012-04-21 46 views
8

Tôi đang sử dụng PJAX và nó hoạt động rất tốt cho các ví dụ đơn giản, nhưng tôi cần có thể thực hiện một vài điều nâng cao với các yêu cầu PJAX.Nối dữ liệu vào yêu cầu PJAX

  1. Tôi muốn nối thêm một số dữ liệu vào mỗi yêu cầu PJAX. Dữ liệu tôi muốn nối thêm thực sự là một mảng các đối tượng. Xem ví dụ bên dưới.
  2. Tôi có thể cần phải sử dụng POST thay vì GET cho cuộc gọi ajax.
  3. Tôi có thể cần phải thay đổi loại nội dung thành "application/json".

Tôi đã sau ...

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". 

}); 

Tôi đã thử nhiều cách tiếp cận ...

  • sử dụng jQuery.ajaxSetup để thiết lập một số giá trị mặc định (tôi có thể thiết dữ liệu, nhưng sau đó phần tử dữ liệu _pjax không được nối thêm; tôi đã cố gắng đặt loại thành POST, nhưng nó không dính.)
  • cố sửa đổi đối tượng jqXHR trong trình xử lý beforeSend
  • cố sửa đổi đối tượng cài đặt trong trình xử lý trướcSửa

Mọi nỗ lực đều mang lại cho tôi nhiều vấn đề khác nhau.

Tôi không chắc tại sao điều này lại quá khó. Mọi sự trợ giúp sẽ rất được trân trọng!

Trả lời

7

Kể từ khi documentation chỉ ra:

Bạn cũng có thể chỉ cần gọi $ .pjax trực tiếp. Nó hoạt động giống như $ .ajax, thậm chí trả lại cùng một thứ và chấp nhận các tùy chọn tương tự.

tôi sẽ thử như sau:

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' 
    }) 
}); 
+0

Cảm ơn. Đó là cách tiếp cận mà tôi đã kết thúc. – Kevin

Các vấn đề liên quan