Sende Liste / Array als Parameter mit jQuery getJson
Habe ich Folgendes, wo ich versuche zu senden Liste/array zu MVC-controller-Methode:
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');
});
in meinem Controller:
public JsonResult UpdateStockList(int[] ids, bool[] stocked) { }
beide Parameter null sind.
Beachten Sie, dass, wenn ich die params auf einzelne Elemente
params.ids = 1;
params.stocked = true;
public JsonResult UpdateStockList(int ids, bool stocked) { }
dann funktioniert es ok, also ich glaube nicht, dass es ein routing-Problem.
InformationsquelleAutor der Frage fearofawhackplanet | 2010-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, die
traditional
Flagge:funktioniert gut mit:
InformationsquelleAutor der Antwort Darin Dimitrov
Neben aufrufen
.ajax()
statt.getJSON()
wie Darin vorgeschlagen wird, oder die Einstellung der globalenjQuery.ajaxSettings.traditional
zutrue
als jrduncans schon sagt, kann man auch das Ergebnis des Aufrufs die jQuery -.param()
- Funktion auf Ihreparams
Objekt:InformationsquelleAutor der Antwort hippietrail
Leider, während es scheint, dass jquery bietet eine "traditionelle" flag zum Umschalten dieses Verhalten auf jQuery.ajax, es nicht auf jQuery.getJSON. Eine Möglichkeit, dies zu umgehen, wäre, setzen Sie das Kennzeichen weltweit:
jQuery.ajaxSettings.traditionelle = true;
Finden Sie in der Dokumentation für jQuery.param: http://api.jquery.com/jQuery.param/
Siehe auch die release notes für diese änderung: http://jquery14.com/day-01/jquery-14 (Suche nach 'traditionellen')
InformationsquelleAutor der Antwort jrduncans
In der Ansicht erzeugen mehrere benannte Felder (nicht
id
alsid
sollte eindeutig sein pro Feld), unter Hinweis auf die Verwendung vonName
nicht aufname
:Dann rufen Sie die input-Feld-Werte mit jQuery, so:
Können Sie diese direkt in jQuery /AJAX wie folgt:
Dann in der controller-action im MVC:
InformationsquelleAutor der Antwort SharpC