114 votes

passer plusieurs paramètres à appel ajax jquery

J'ai le texte suivant jquery code pour appeler un webmethod dans une page aspx

$.ajax({
    type: "POST",
    url: "popup.aspx/GetJewellerAssets",
    contentType: "application/json; charset=utf-8",
    data: '{"jewellerId":' + filter + '}',
    dataType: "json",
    success: AjaxSucceeded,
    error: AjaxFailed
});

et ici, le web est la signature de la méthode

[WebMethod]
public static string GetJewellerAssets(int jewellerId)
{

Cela fonctionne très bien.

Mais maintenant, j'ai besoin d'obtenir deux paramètres passés à la méthode web

le nouveau site web de la méthode ressemble à ceci

[WebMethod]
public static string GetJewellerAssets(int jewellerId, string locale)
{
}

Comment puis-je changer le code du client à appeler avec succès cette nouvelle signature de la méthode ?

EDIT:

Les 2 syntaxes travaillé

data: '{ "jewellerId":' + filter + ', "locale":"en" }',

et

data: JSON.stringify({ jewellerId: filter, locale: locale }),

où filtre et les paramètres régionaux sont des variables locales

159voto

Darin Dimitrov Points 528142

Ne pas utiliser la concaténation de chaînes pour passer des paramètres, il suffit d’utiliser un hachage de données :


MISE À JOUR :

Comme suggéré par @Alex dans la section commentaires, un PageMethod ASP.NET attend des paramètres à JSON encodé dans la demande, donc `` doit être appliqué sur le hachage de données :

18voto

David Hedlund Points 66192
data: '{"jewellerId":"' + filter + '","locale":"' + locale + '"}',

8voto

pixeline Points 8713

Il suffit d’ajouter autant de propriétés que vous avez besoin à l’objet de données.

4voto

Justinonday Points 61
$.ajax({
    type: 'POST',
    url: 'popup.aspx/GetJewellerAssets',      
    data: "jewellerId=" + filter+ "&locale=" +  locale,  
    success: AjaxSucceeded,
    error: AjaxFailed
});

3voto

Ariel Points 2360

A quelqu'un d’autre a remarqué que l’objet/string json n’est pas valide dans toutes les réponses à l’exception de David Hedlund ? :)

Objets JSON doivent être formatés de la manière suivante : {« key » : (« valeur » | 0 | false)}. En outre, écrire sous forme de chaîne nécessite beaucoup moins de stringifying de l’objet...

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