2012-04-21 31 views
8

Używam PJAX i działa świetnie dla prostych przykładów, ale muszę być w stanie zrobić kilka zaawansowanych rzeczy z żądaniami PJAX.Dołącz dane do żądania PJAX

  1. Chciałbym dołączyć niektóre dane do każdego żądania PJAX. Dane, które chcę dodać, to w rzeczywistości szereg obiektów. Zobacz przykład poniżej.
  2. Być może trzeba użyć POST zamiast GET dla wywołania ajax.
  3. Może być konieczna zmiana typu zawartości na "application/json".

Mam następujący ...

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

}); 

Próbowałem różnych podejść ...

  • pomocą jQuery.ajaxSetup ustawić pewne wartości domyślne (można ustawić dane, ale potem element danych _pjax nie jest dołączany, próbowałem ustawić typ na POST, ale to się nie dało.)
  • próbuje zmodyfikować obiekt jqXHR w module obsługi beforeSend
  • próbuje zmodyfikować obiekt ustawień w module obsługi beforeSend

Wszystkie próby dają mi różne problemy.

Nie jestem pewien, dlaczego jest to takie trudne. Każda pomoc będzie bardzo ceniona!

Odpowiedz

7

Od documentation zaznacza:

Można też po prostu zadzwonić $ .pjax bezpośrednio. Działa podobnie do $ .ajax, nawet zwracając to samo i akceptując te same opcje.

chciałbym spróbować wykonać następujące czynności:

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

Dzięki. Takie podejście doszedłem. – Kevin