J'utilise la méthode ci-dessus et cela fonctionne bien avec un paramètre dans l'URL.
par exemple Students/getstud/1
où le format contrôleur / action / paramètre est appliqué.
Maintenant, j'ai une action dans le contrôleur des étudiants qui accepte deux paramètres et renvoie un objet JSON.
Alors, comment publier des données avec la $.getJSON()
méthode de publication?
Des méthodes similaires sont également acceptables.
Le but est d'appeler une action du contrôleur avec AJAX.
get
dans lesgetJSON
moyens utiliser GET pour obtenir du json.Réponses:
La méthode $ .getJSON () effectue un HTTP GET et non un POST. Vous devez utiliser $ .post ()
Dans cet appel, il
dataToBeSent
peut s'agir de tout ce que vous voulez, bien que si vous envoyez le contenu d'un formulaire html, vous pouvez utiliser la méthode sérialiser pour créer les données pour le POST à partir de votre formulaire.la source
Voici ma solution «en une ligne»:
Afin d'utiliser jsonp et la méthode POST, cette fonction ajoute le paramètre GET "callback" à l'URL. Voici comment l'utiliser:
Le serveur doit être prêt à gérer le paramètre de rappel GET et à renvoyer la chaîne json sous la forme:
dans lequel "jsonp000000" est la valeur GET de rappel.
En PHP, l'implémentation serait comme:
J'ai fait des tests inter-domaines et cela semble fonctionner. Encore besoin de tests supplémentaires.
la source
?callback
? dans l'url? Cela a fait que le rappel ne soit pas appelé pour moi. J'ai également ajoutéJSON.stringify(data)
. +1, article utile!jQuery.getJSON = function(url, data, func) { return $.get(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }
Ajoutez simplement ces lignes à votre
<script>
(quelque part après le chargement de jQuery mais avant de poster quoi que ce soit):Remplacez (certains / tous)
$.getJSON
par$.postJSON
et profitez-en!Vous pouvez utiliser les mêmes fonctions de rappel Javascript qu'avec
$.getJSON
. Aucun changement côté serveur n'est nécessaire. (Eh bien, je vous recommande de toujours utiliser$_REQUEST
en PHP. Http://php.net/manual/en/reserved.variables.request.php , entre $ _REQUEST, $ _GET et $ _POST lequel est le plus rapide? )C'est plus simple que la solution de @ lepe.
la source
J'avais du code qui faisait getJSON. Je l'ai simplement remplacé par post. À ma surprise, il a fonctionné
la source
Je viens d'utiliser un post et un if:
la source
$.getJSON()
est assez pratique pour envoyer une requête AJAX et récupérer des données JSON en tant que réponse. Hélas, la documentation jQuery n'a pas de fonction sœur qui devrait être nommée$.postJSON()
. Pourquoi ne pas simplement l'utiliser$.getJSON()
et en finir avec? Eh bien, peut-être voulez-vous envoyer une grande quantité de données ou, dans mon cas, IE7 ne veut tout simplement pas fonctionner correctement avec une requête GET.C'est vrai, il n'y a actuellement aucune
$.postJSON()
méthode, mais vous pouvez accomplir la même chose en spécifiant un quatrième paramètre (type) dans la$.post()
fonction:Mon code ressemblait à ceci:
la source
si vous n'avez que deux paramètres, vous pouvez le faire:
la source