Ich verwende die obige Methode und sie funktioniert gut mit einem Parameter in der URL.
zB Students/getstud/1
wo Controller / Action / Parameter Format angewendet wird.
Jetzt habe ich eine Aktion im Students-Controller, die zwei Parameter akzeptiert und ein JSON-Objekt zurückgibt.
Wie poste ich Daten mit der $.getJSON()
Post-Methode?
Ähnliche Methoden sind auch akzeptabel.
Der Punkt ist, eine Aktion des Controllers mit AJAX aufzurufen.
get
ingetJSON
Mittel GET verwenden einige Json zu bekommen.Antworten:
Die $ .getJSON () -Methode führt ein HTTP-GET und kein POST durch. Sie müssen $ .post () verwenden
Dieser Aufruf kann
dataToBeSent
beliebig sein. Wenn Sie jedoch den Inhalt eines HTML-Formulars senden, können Sie die Serialisierungsmethode verwenden, um die Daten für den POST aus Ihrem Formular zu erstellen.quelle
Dies ist meine "einzeilige" Lösung:
Um die jsonp- und POST-Methode zu verwenden, fügt diese Funktion der URL den Parameter "callback" GET hinzu. Dies ist die Art und Weise, wie Sie es verwenden:
Der Server muss darauf vorbereitet sein, den Rückruf-GET-Parameter zu verarbeiten und die JSON-Zeichenfolge wie folgt zurückzugeben:
in dem "jsonp000000" der Rückruf-GET-Wert ist.
In PHP wäre die Implementierung wie folgt:
Ich habe einige domänenübergreifende Tests durchgeführt und es scheint zu funktionieren. Ich brauche noch mehr Tests.
quelle
?callback
? in url? Das machte den Rückruf nicht für mich angerufen. Ich habe auch hinzugefügtJSON.stringify(data)
. +1, hilfreicher Beitrag!jQuery.getJSON = function(url, data, func) { return $.get(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }
Fügen Sie diese Zeilen einfach zu Ihrer hinzu
<script>
(irgendwo nachdem jQuery geladen wurde, aber bevor Sie etwas veröffentlichen):Ersetzen Sie (einige / alle)
$.getJSON
durch$.postJSON
und genießen Sie!Sie können dieselben Javascript-Rückruffunktionen wie bei verwenden
$.getJSON
. Es ist keine serverseitige Änderung erforderlich. (Na ja, ich mit immer empfehlen ,$_REQUEST
in PHP. Http://php.net/manual/en/reserved.variables.request.php , unter $ _REQUEST, $ _GET und $ _POST , die eine der am schnellsten ist? )Dies ist einfacher als die Lösung von @ lepe.
quelle
Ich hatte Code, der getJSON ausführte. Ich habe es einfach durch Post ersetzt. Zu meiner Überraschung hat es funktioniert
quelle
Ich habe gerade Post und ein Wenn verwendet:
quelle
$.getJSON()
ist sehr praktisch, um eine AJAX-Anfrage zu senden und JSON-Daten als Antwort zurückzugewinnen. Leider fehlt der jQuery-Dokumentation eine Schwesterfunktion, die benannt werden sollte$.postJSON()
. Warum nicht einfach benutzen$.getJSON()
und damit fertig sein? Nun, vielleicht möchten Sie eine große Datenmenge senden, oder in meinem Fall möchte IE7 mit einer GET-Anfrage einfach nicht richtig funktionieren.Es gibt zwar derzeit keine
$.postJSON()
Methode, aber Sie können dasselbe erreichen, indem Sie einen vierten Parameter (Typ) in der$.post()
Funktion angeben:Mein Code sah folgendermaßen aus:
quelle
Wenn Sie nur zwei Parameter haben, können Sie dies tun:
quelle