Envoyer tableau MVC contrôleur via JSON?
Je suis en train d'essayer, et de la difficulté, pour envoyer un tableau via JSON d'un MVC action du contrôleur.
Voici ce que j'ai et ce que j'ai essayé...
//Get checked records
var $checkedRecords = $(':checked'); //e.g. 3 rows selected = [input 4, input 5, input 6]
//Have tried following:
sendingVar: $checkedRecords.serializeArray(); //gives array of 0's
sendingVar: JSON.stringify($checkedRecords); //gives "{\"length\":1,\"prevObject\":{\"0\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"length\":1},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"selector\":\":checked\",\"0\":{}}"...wtf
//Post
$.post(url, { sendingVar: sendingVar }, function(data) {alert(data); });
Comment dois-je faire ?
edit: pour ceux qui proposent l'envoi de $checkedRecords
"comme c'est" à partir de la ligne du haut - qui n'est pas de travail. J'ai une drôle d'exception quelque part dans le framework jquery 🙁
uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://.../.../.../jquery-1.4.4.min.js :: <TOP_LEVEL> :: line 141" data: no]
qui je pense signifie qu'il est tentant d'affecter null à quelque chose, il ne le peut pas.
Edit: je suis en utilisant MVC2 pas 3
Edit2: Après @lundi de réponse- le problème est dû à la façon dont j'ai construit le tableau comme [input 4, input 5, input 6]
et pas [4,5,6]
- des idées de comment je peux obtenir les valeurs dans le tableau à la place ?
Edit3: Arrêter de vote jusqu'en double quand il ne l'est pas. Avez-vous réellement lu mon problème ou de lire les problèmes liés? c'est un problème différent
@Daveo:
Je ne veux pas construire dans une grande attribut personnalisé juste pour envoyer un tableau à partir d'JSON, c'est ridicule comme nous l'avons déjà couvert dans cette question-il n'est pas nécessaire.
Quel est votre résultat souhaité? Votre tableau est de jQuery objets, la stringify version a l'air bonne pour moi. Qu'attendez-vous pour?
c'est juste un tableau contenant une chaîne de caractères IDENTIFIANT des éléments sélectionnés. Je veux checkedRecords pour contenir un tableau de tous les ID des éléments sélectionnés. L'entrée sélectionnée est
value
contient la valeur de l'ID dont j'ai besoin.OriginalL'auteur baron | 2011-08-19
Vous devez vous connecter pour publier un commentaire.
Voici ma version de démonstration,utilisez mvc2,espère un peu d'aide~
La clé du succès est traditionnelle
définir la
traditional
paramètre à trueDepuis jquery 1.4 ce paramètre n'existe que parce que le mécanisme de sérialiser des objets dans les paramètres de la requête a changé.
et de l'action est de~
orderedIds
est null dans la méthode de contrôleur. Je soupçonne en raison de l'ajax est en fait unGET
?Dans ma position, il fonctionne très bien.
orderedIds
est un nom de paramètreHmmm excuses, vous avez raison, ce code ne fonctionne pas. Donc, le problème réside dans la façon dont je suis l'obtention de la matrice de vérifié Id avec
var $checkedRecords = $(':checked');
qui me donne[input 3, input 4, input 5]
où j'ai réellement besoin:[1, 2]
. Mercivoir http://jsfiddle.net/D8Vfv/
merci, je l'ai eu avec
var items = []; $("input:checked").each(function () { items.push($(this).val()); });
OriginalL'auteur Monday
vous pouvez également utiliser
JSON.stringyfy
pour envoyer les données sous forme de chaîne de caractères, puis utiliserJavaScriptSerializer class
de restauration des données.Dans le code C#, pour obtenir les données, ressemblera à ceci:
OriginalL'auteur JoshSabb