11
votes

Ajax Post Demander les données de la poignée dans Symfony2 Controller

Je ne comprends vraiment pas comment gérer des données postales de demande ajax. Ceci est mon javascript:

$.ajax({
                type: "POST",
                url: '{{path('_demo')}}',                    
                data: {
                    title: 'title',                
                    description: 'description',
                    questions: 'questions',
                    pollid: 1                        
                }
            })


0 commentaires

4 Réponses :


1
votes

Vous pouvez construire votre objet JSON et transmettre l'objet JSON à votre contrôleur à l'aide de JSON.Stringify.

https://developer.mozilla.org/ EN-US / DOCS / JavaScript / Référence / Global_Objects / JSON / StringIFIFY P>

var obj = {
      title: title,                
      description: description,
      questions: questions              
};

$.ajax({
 type: "POST",
 url: Routing.generate('save'),
 contentType: 'application/json; charset=UTF-8',
 data: JSON.stringify(obj)
});


3 commentaires

Et c'est le flux de travail normal? Je pensais que la méthode Ajax le gérera seul?


Oui, parce que $ .ajax ne sérialiste pas les données à JSON.


Mais pourquoi ne puis-je pas utiliser les méthodes de demande normales? Je reçois seulement les données via $ Demande-> GetContent ()



9
votes

Utilisez-vous l'objet de la requête dans votre contrôleur?

$all = $request->request->all();


10 commentaires

Contenu a été une chaîne comme ceci: Titre = SADFSDF & Description = & Questions% 5B357147573695183% 5D% 5B Question% 5D = SDFAS & Questions% 5B3571475736 95183% 5D% 5D = & Questions% 5B3 57147573695183% 5D% 5B3 57147573695183% 5D% 5B3B % 5d = false & questions% 5b3571475736 95183% 5D% 5Bqtype% 5d = 1 et questions% 5B357147 573695183% 5d% 5bsort% 5D = 1 & Questions% 5B357 147573695183% 5d% 5Bid% 5d = 357147573695183 & Questions% 5b35714757 3695183% 5D% 5Binput% 5 D% 5B% 5D = FSDFASDF & que STONS% 5B35714757369 5183% 5D% 5Binput% 5D 5D 5D 5D = SAFSDF & Question S% 5B357147573695183% 5D% 5BVALID% 5D = True & Q uestions% 5B357147573 695183% 5D% 5BADD% 5D = T RUE & POLLID =


$ demande-> demande-> tout (); était aussi vide. Seulement GetContent () me gagne toutes les données. Lorsque j'ajoute les données à la partie URL, tout va bien. Mais je dois envoyer les données via le paramètre de données car les données postales peuvent être très importantes.


Comment ressemble votre méthode Ajax?


Comme le tien, mais je n'utilise pas le paquet pour générer des itinéraires (oublié le nom du paquet). Peut-être que le problème est que vous définissez un contenu de contenu. Avez-vous essayé de le laisser et voyez ce qui se passe? JQuery Docu dit "Par défaut" Application / X-www-Form-Urlencoded; Charset = UTF-8 ", qui va bien pour la plupart des cas"


Votre variable de demande de $ est-elle aussi vide que si vous le déchargez-vous? Parce que normalement, vous pouvez également accéder à des données comme $ titre = Demande de $ [titre '];


Seul GetContent () a du contenu, le reste est vide. J'ai laissé le contenu de contenu alos vide, c'était le même résultat.


C'est délicat. Je ne suis pas sûr de ce que je pourrais vous conseiller ensuite. Peut-être que vous pourriez poster la route dans votre routage.yml et le contrôleur correspondant? Avez-vous des informations de débogage? N'importe quoi par exemple Les outils de développeurs Firebug ou Chrome disent que lorsque la demande Ajax réussit?


Est-ce que ces deux exemples ci-dessus diffèrent-ils à l'aide du paquet de routage et de ne pas l'utiliser? Parce que vous utilisez dans un routage. Générer et dans l'autre que vous utilisez des brindilles {{chemin (... ... ...)}}


correct, c'est une différence, mais la valeur de retour est également juste une URL et que le routage est correct, car la demande va à l'action correcte du contrôleur.


Et dans le cas où vous n'utilisez pas le paquet, vous ne pouvez pas également accéder à vos données avec le titre Normal $ = Ceci-> Obtenir ('Demande') -> Demande-> Obtenir ("titre"); ou pouvez-vous?



1
votes

Quiz - Nom du formulaire Serialize -populer les variables

$request = $this->get('request');
$usercomment=$request->request->get('parameterName');


0 commentaires

0
votes

Pourquoi JSON? Je voulais dire est une exigence du type de contenu JSON? Sinon, c'est la façon dont je traite Ajax et à l'aide de FosRoutingBundle que je peux voir que vous utilisez.

$(document).ready(function(){
    $('#myForm').submit( function(e){       

        e.preventDefault();
        var $form = $(this);
        var $formPHP = $form.serializeArray();
        var $url = Routing.generate( 'route_to_use');

        $.post( $url, $formPHP, function(data){
        .....
        });

    });    
});


0 commentaires