Używam powyższej metody i działa dobrze z jednym parametrem w adresie URL.
np. Students/getstud/1
gdzie zastosowano format kontrolera / akcji / parametru.
Teraz mam akcję w kontrolerze Students, która akceptuje dwa parametry i zwraca obiekt JSON.
Jak więc opublikować dane $.getJSON()
metodą postu?
Dopuszczalne są również podobne metody.
Chodzi o to, aby wywołać akcję kontrolera za pomocą AJAX.
get
wgetJSON
drodze użyć GET , aby uzyskać pewne json.Odpowiedzi:
Metoda $ .getJSON () wykonuje HTTP GET, a nie POST. Musisz użyć $ .post ()
W tym wywołaniu
dataToBeSent
może być wszystko, co chcesz, chociaż jeśli wysyłasz zawartość formularza html, możesz użyć metody serialize , aby utworzyć dane dla POST z formularza.źródło
Oto moje rozwiązanie „jednowierszowe”:
Aby użyć metody jsonp i POST, funkcja ta dodaje parametr GET „callback” do adresu URL. Oto sposób korzystania z niego:
Serwer musi być przygotowany do obsługi parametru GET wywołania zwrotnego i zwrócenia ciągu json jako:
w którym „jsonp000000” jest wartością GET wywołania zwrotnego.
W PHP implementacja wyglądałaby tak:
Zrobiłem kilka testów międzydomenowych i wydaje się, że działa. Nadal jednak potrzebuję więcej testów.
źródło
?callback
? w adresie URL? To sprawiło, że oddzwonienie nie było wywoływane za mnie. Dodałem teżJSON.stringify(data)
. +1, pomocny post!jQuery.getJSON = function(url, data, func) { return $.get(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }
Po prostu dodaj te linie do swojego
<script>
(gdzieś po załadowaniu jQuery, ale przed wysłaniem czegokolwiek):Wymienić (niektóre / wszystkie)
$.getJSON
z$.postJSON
i ciesz się!Możesz używać tych samych funkcji zwrotnych JavaScript, co w przypadku
$.getJSON
. Nie jest wymagana żadna zmiana po stronie serwera. (Cóż, zawsze zalecamy użycie$_REQUEST
w PHP. Http://php.net/manual/en/reserved.variables.request.php , Wśród $ _REQUEST, $ _GET i $ _POST, który z nich jest najszybszy? )Jest to prostsze niż rozwiązanie @ lepe.
źródło
Miałem kod, który robił getJSON. Po prostu zastąpiłem go postem. Ku mojemu zdziwieniu zadziałało
źródło
Właśnie użyłem postu i if:
źródło
$.getJSON()
jest bardzo przydatny do wysyłania żądania AJAX i odzyskiwania danych JSON jako odpowiedzi. Niestety, w dokumentacji jQuery brakuje funkcji siostrzanej, którą należałoby nazwać$.postJSON()
. Dlaczego nie po prostu go użyć$.getJSON()
i skończyć z tym? Cóż, być może chcesz wysłać dużą ilość danych lub, w moim przypadku, IE7 po prostu nie chce działać poprawnie z żądaniem GET.To prawda, obecnie nie ma
$.postJSON()
metody, ale możesz osiągnąć to samo, określając czwarty parametr (typ) w$.post()
funkcji:Mój kod wyglądał tak:
źródło
jeśli masz tylko dwa parametry, możesz to zrobić:
źródło