2010-01-09 4 views
2

$ Je suis en train de poster un appel ajax comme si elle était l'élément de formulaire suivant:Jquery Poster tableau multidimensionnel via .ajax

<input type="text" name="data[BlogPost][title]" /> 

Mais je ne suis pas avoir de chance est ma source ici:

$.ajax({ 
     url: "/add/", 
     type: "POST", 
     data: (/* what do I do here */), 
     success: function(msg){ 
      alert(msg); 
     } 
    }); 

J'ai essayé des objets imbriqués mais qui génère seulement une réponse du serveur comme: tableau 'data' => string '[object Object]' (longueur = 15)

Lequel ne fait rien de bien!

Des pensées?

Répondre

7

Il suffit de mettre le nom du champ entre guillemets, remarque aussi que je utilise un littéral d'objet pour le paramètre de données {} vs les parens que vous aviez dans votre question:

$.ajax({ 
    url: "/add/", 
    type: "POST", 
    data: { 'data[BlogPost][title]':'My New Title'} , 
    success: function(msg){ 
     alert(msg); 
    } 
}); 
+0

Juste curieux, est-ce que ça marche? 'data: {'data [BlogPost] [titre]': $ (" entrée [nom = 'données [BlogPost] [titre]'] "). val()'} ,? –

+0

Vous devriez probablement échapper les caractères '[]' dans le sélecteur jQuery: http://docs.jquery.com/Selectors La liste tout en bas montre ce qui doit être échappé. Cela a plus à voir avec les sélecteurs jQuery et CSS qu'avec les noms W3C valides. –

+0

@Doug: merci pour la perspicacité utile! –

0

Avez-vous essayé serialize()? Je ne suis pas sûr à 100% que cela fonctionne sur des tableaux multidimensionnels, mais ça vaut le coup.

+0

Cela travaillerait en certains contextes, mais je n'ai pas la forme pour saisir des données de – SeanDowney

+0

SERIALIZE? Vous plaisantez j'espère? VRAIMENT? un mot bizarre qui m'a sauvé les HEURES déjà passées sur les tableaux, .each, et d'autres conneries que j'ai essayées et pour arriver à découvrir que c'est juste un mot appelé SERIALIZE? ou plus du terme $ ('# myForm'). serialize() WOW. J'utilise ASP.NET 4.0 Bêta 2 w/MVC 2 Preview 2 framework, DataAnnotations, Validations Jquery côté client, jQuery AJAX, un plugin jQuery "Notify" et quelques autres simplement pour réinitialiser un mot de passe pour une page. J'aime MVC 2 ... –

0

Ma conjecture, [..] crochets ne sont pas des caractères valides pour les noms des éléments d'entrée?

-moi si je me trompe.

Mise à jour: Oups, ok donc je me trompe. Laissera ceci ici de toute façon comme une information «d'apprentissage». Pour d'autres comme moi :)

+0

C'est en fait comment les Rails et PHP gèrent les tableaux et les tableaux multidimensionnels. –

+1

Ils sont valides, utilisés pour désigner des tableaux. –

+0

Un merci de rétracter le vote, quel qu'il soit :) –