Passer un tableau de chaînes à la méthode Web avec un nombre variable d’arguments à l’aide de jQuery AJAX

J’essaie de transmettre un tableau de parameters de chaîne à un service Web C # ASP.NET à l’aide de jQuery Ajax. Voici mon exemple de méthode Web. Notez que la fonction accepte un nombre variable de parameters. J’obtiens une erreur de 500 serveur interne dans la console JavaScript de Chrome lorsque j’exécute jquery. J’utilise jquery 1.6.2 et .NET3.5

[WebMethod] public ssortingng Concat(params ssortingng[] arr) { ssortingng result = ""; for (int i = 0; i < arr.Length; i++) { result += arr[i]; } return result; } 

Voici le jquery:

 $(document).ready(function() { var myCars=new Array(); myCars[0]="Saab"; myCars[1]="Volvo"; myCars[2]="BMW"; $.ajax({ type: "POST", url: "WebService.asmx/Concat", data: {arr: myCars}, //can't figure out what to put here success: onSuccess, Error: onError }); }); function onSuccess() { alert("testing"); } function onError() { alert("fail"); }  

Toute aide est appréciée!

Code côté serveur révisé:

 [WebMethod] public ssortingng Concat(List arr) { ssortingng result = ""; for (int i = 0; i < arr.Count; i++) { result += arr[i]; } return result; } 

Ajoutez également ceci au-dessus de votre déclaration de classe WebService :

 [System.Web.Script.Services.ScriptService] 

Code client révisé:

  $(document).ready(function () { var myCars = new Array(); myCars[0] = "Saab"; myCars[1] = "Volvo"; myCars[2] = "BMW"; $.ajax({ type: "POST", url: "WebService.asmx/Concat", data: JSON.ssortingngify({ arr: myCars }), contentType: "application/json; charset=utf-8", dataType: "json", success: onSuccess, failure: onError }); }); function onSuccess(response) { alert(response.d); } function onError() { alert("fail"); } 

Ajoutez également au-dessus de ce script une référence à JSON2, telle que:

  

Remarques:

  • J'ai testé cela sous .NET 4 et en utilisant jQuery 1.6.4.
  • Assurez-vous de garder les noms de variable client et serveur synchronisés:
    public ssortingng Concat(List arr )
    data: JSON.ssortingngify({ arr : myCars })