web-dev-qa-db-fra.com

Tableau jQuery Ajax POSTing vers le contrôleur ASP.NET MVC

Il me manque quelque chose ici. J'ai ce JavaScript jQuery:

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

orderedIds est un tableau de nombres JavaScript (par exemple var orderedIds = [1, 2]).

La méthode de gestion Controller est:

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

Lorsque je mets une Debugger.Break() dans UpdateNoteOrder(), orderedIds est null dans la fenêtre de surveillance. (unixTimeMs, cependant, a une valeur numérique.)

Comment passer le tableau de nombres via $.ajax() de telle sorte que orderedIds soit un long[] Dans mon contrôleur?

Réglez simplement 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 en paramètres de requête a changé.

123
Darin Dimitrov

vous devrez transformer les ID commandés en un tableau de paramètres, 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()
    }
});
0
Jeremy B.