57 votes

Tableau jQuery Ajax POSTing sur un contrôleur ASP.NET MVC

Je suis absent quelque chose ici. J'ai eu cette jQuery JavaScript:

$.ajax({
    type: "POST",
    url: "/update-note-order",
    dataType: "json",
    data: {
        orderedIds: orderedIds,
        unixTimeMs: new Date().getTime()
    }
});

orderedIds est un nombre JavaScript array (par exemple, var orderedIds = [1, 2]).

La manutention Controller méthode:

[HttpPost]
public void UpdateNoteOrder(long[] orderedIds, long unixTimeMs)
{
    ...
}

Quand je mets un Debugger.Break() en UpdateNoteOrder(), orderedIds est null dans la fenêtre espion. (unixTimeMs, cependant, a une valeur numérique.)

Comment puis-je passer le nombre matrice $.ajax() tels que orderedIds est long[] dans mon contrôleur?

125voto

Darin Dimitrov Points 528142

Il suffit de définir le paramètre traditional sur true :

 $.ajax({
    type: "POST",
    url: "/update-note-order",
    dataType: "json",
    traditional: true,
    data: {
        orderedIds: orderedIds,
        unixTimeMs: new Date().getTime()
    }
});
 

Depuis jquery 1.4, ce paramètre existe car le mécanisme de sérialisation des objets dans les paramètres de requête a changé.

0voto

Jeremy B. Points 6079

vous aurez besoin de transformer ordersOrd dans un tableau param, sinon le contrôleur ne le verra pas

 $.param({ orderedIds: orderedIds });  
 

dans votre code:

 $.ajax({
    type: "POST",
    url: "/update-note-order",
    dataType: "json",
    data: {
        orderedIds: $.param({ orderedIds: orderedIds }),
        unixTimeMs: new Date().getTime()
    }
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X