ajax post de demande de traiter les données dans symfony2 contrôleur
je ne comprends vraiment pas comment gérer l'envoi de données à partir d'une requête ajax. C'est mon javascript:
$.ajax({
type: "POST",
url: Routing.generate('save'),
contentType: 'application/json; charset=UTF-8',
data: {
title: title,
description: description,
questions: questions,
}
});
La seule façon d'obtenir les données à l'intérieur de mon contrôleur de l'action est: est-ce
$content = $request->getContent()
$contenu est un paramètre de l'url de la chaîne.
Pourquoi ne puis-je pas obtenir les données normalement avec:
$request->get('title')
Quelle est la manière correcte de traiter les données post avec jquery ajax methd?
Merci beaucoup.
MODIFIER
Donc, j'ai trouvé le problème suivant:
Dans mon projet actuel, la demande ressemble à ceci:
$.ajax({
type: "POST",
url: Routing.generate('poll_save'),
data: {
title: title
}
})
Les données sont demandées par Demande de la Charge utile mais je ne sais pas pourquoi.
Dans un endroit propre projet de la requête ressemble à ceci:
$.ajax({
type: "POST",
url: '{{path('_demo')}}',
data: {
title: 'title',
description: 'description',
questions: 'questions',
pollid: 1
}
})
Quelque chose dans mon projet va mal. Avez-vous une idée de pourquoi les données sont demandées par Demande de la Charge utile?
OriginalL'auteur Sandor Farkas | 2013-04-27
Vous devez vous connecter pour publier un commentaire.
Utilisez-vous l'objet de la requête dans votre contrôleur?
C'est ma façon normale quand je veux obtenir des données à partir d'un appel ajax.
Pourriez-vous poster ce que $contenu contient?
Je ne vois pas de problème avec la publication des données comme vous l'avez fait. La construction d'un objet json peut être utile, mais la façon dont vous êtes en train de faire, il semble bien pour moi. J'ai fait cela aussi.
MODIFIER
Normalement vous pouvez également accéder à toutes les données dans la requête en faisant ceci:
Peut-être vous pourriez alors
var_dump()
les variables pour voir si quelque chose est en eux.$request->request->tous les(); il a été aussi vide. seulement getContent() m'accordait toutes les données. quand j'ajoute les données à l'url de la partie, tout va bien. mais j'ai besoin d'envoyer les données via le paramètre de données, car les données post, peut être très importante.
comment est-ce que votre méthode ajax?
Comme la vôtre, mais je ne suis pas en utilisant le bundle permettant de générer des itinéraires (oublié le nom du bundle). Peut-être le problème, c'est que vous définissez un contentType. Avez-vous essayez de le laisser sortir et de voir ce qui se passe? jQuery Docu dit "par Défaut est "application/x-www-form-urlencoded; charset=UTF-8", qui est très bien pour la plupart des cas"
seulement getContent() a un contenu, le reste est vide. J'ai quitté contentType alos vide, on a le même résultat.
OriginalL'auteur
Vous pouvez construire votre objet json et de passer l'objet JSON de votre contrôleur en utilisant JSON.stringify.
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify
Oui, parce que $.ajax n'est pas sérialiser les données en JSON.
Mais pourquoi ne puis-je pas utiliser la normale requets méthodes? Je ne reçois que des données via $request->getContent()
OriginalL'auteur
quiz - nom du formulaire
sérialiser -renseigner les variables
ou
Contrôleur - ressemble Plus à ce que les commentaires précédents suggéré.
OriginalL'auteur
Pourquoi Json? Je voulais dire, c'est une exigence pour le type de contenu json? si non, c'est ma façon de gérer l'ajax et l'utilisation de FOSRoutingbundle que je peux voir que vous êtes en utilisant.
Puis dans le contrôleur, vous pouvez l'utiliser comme une requête normale.
OriginalL'auteur