Envoyer liste/tableau comme paramètre avec jQuery getJson
J'ai le texte suivant où je suis en train d'envoyer la liste/tableau de MVC méthode de contrôleur:
var id = [];
var inStock = [];
$table.find('tbody>tr').each(function() {
id.push($(this).find('.id').text());
inStock.push($(this).find('.stocked').attr('checked'));
});
var params = {};
params.ids = id;
params.stocked = inStock;
$.getJSON('MyApp/UpdateStockList', params, function() {
alert('finished');
});
dans mon contolleur:
public JsonResult UpdateStockList(int[] ids, bool[] stocked) { }
les deux paramètres sont nuls.
Remarque que si je change les paramètres pour les éléments simples
params.ids = 1;
params.stocked = true;
public JsonResult UpdateStockList(int ids, bool stocked) { }
il fonctionne ok, donc je ne pense pas que c'est un problème de routage.
Vous devez vous connecter pour publier un commentaire.
Essayer de régler le
traditional
drapeau:fonctionne très bien avec:
traditional
paramètre.En plus de l'appel de
.ajax()
au lieu de.getJSON()
que Darin suggère ou de réglage de la globaljQuery.ajaxSettings.traditional
àtrue
comme jrduncans l'indique, vous pouvez également passer le résultat de l'appel d' le jQuery.param()
function sur votreparams
objet:Malheureusement, alors qu'il semble que jquery fournit un "traditionnel" drapeau " pour activer ou désactiver ce comportement sur jQuery.ajax, ce n'est pas sur jQuery.getJSON. Un moyen de contourner ce problème pourrait être de définir l'indicateur à l'échelle mondiale:
jQuery.ajaxSettings.traditionnelle = true;
Consultez la documentation de jQuery.param: http://api.jquery.com/jQuery.param/
Voir aussi les notes de version de ce changement: http://jquery14.com/day-01/jquery-14 (de la recherche pour "traditionnel")
Dans la vue, de générer des plusieurs champs nommés (pas
id
, commeid
doit être unique par domaine), notant l'utilisation deName
ne sont pasname
:Puis récupérer le champ de saisie de valeurs à l'aide de jQuery, donc:
Vous pouvez l'utiliser directement en jQuery /AJAX comme suit:
Puis dans l'action du contrôleur MVC: