Je sais qu'il y a plus de discussions à ce sujet mais elles ne m'aident pas et je vais devenir fou ici!Passer des paramètres dans un appel jQuery ajax à une méthode Web ASP.NET
Je veux passer certains paramètres dans une méthode web en utilisant jQuery Ajax.
var paramList = '';
for(i = 0; i < IDList.length; i++){
if (paramList.length > 0) paramList += ',';
paramList += '"' + 'id' + '":"' + IDList[i].value + '"';
}
paramList = '{' + paramList + '}';
var jsonParams = JSON.stringify(paramList);
$.ajax({
type: "POST",
url: "editactivity.aspx/UpdateSequenceNumber",
data: jsonParams,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
}
});
Dans l'appel ajax, si je mets des données à ParamList je reçois l'erreur: "appel de service Web non valide, valeur manquante pour le paramètre: \ u0027a \ u0027."
Si je mets des données à jsonParams je reçois l'erreur:
"Cannot convert object of type \u0027System.String\u0027 to type \u0027System.Collections.Generic.IDictionary`2[System.String,System.Object]\u0027"
Si j'écrire paramList
, il est dans un format JSON correct comme {"id":"140", "id":"138"}
Si j'écrire jsonParams
, il est dans une mauvaise format comme "{\"id\":\"140\",\"id\":\"138\"}"
La méthode Web: (il ne le fait pas encore beaucoup ..)
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string a, string b)
{
return a+b;
}
Qu'est-ce que je fais mal? Je n'arrive pas à obtenir cette chose JSON.
MISE À JOUR:
Après l'aide de la première réponse que je vais maintenant envoyer {"id":["138","140"]}
dans la requête AJAX.
La méthode Web prend maintenant une chaîne appelée id
comme paramètre à la place.
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string id)
{
return id;
}
Maintenant je la nouvelle erreur:
"Type \u0027System.Array\u0027 is not supported for deserialization of an array."
Merci, je ne le savais pas. Maintenant après je le fais var c = JSON.stringify ({"id": liste}); Je reçois: {"id": ["138", "140"]} ce qui semble correct. Mais sais que je reçois une nouvelle erreur lors de la requête ajax: "Type \ u0027System.Array \ u0027 n'est pas supporté pour la désérialisation d'un tableau." – larschanders
Je ne savais pas que nous pouvions utiliser le type de liste comme type de données C# avec webmethod, merci;) –
Heureux que nous puissions nous entraider :) – larschanders