2011-04-13 2 views
2

J'ai la méthode Web ASP.net suivante:Comment appeler la méthode web ASP.net avec le paramètre Array de jQuery Javascript?

[WebMethod] 
public static string SaveUserNew(string id, string[] roles) 
{ 
doStuff(id, roles); 
} 

J'appelle ce code de jQuery code Javascript, mais je ne connais pas la syntaxe pour passer un tableau. Habituellement, j'écris du code jQuery pour appeler des méthodes web qui ressemblent à ceci:

 $.ajax({ 
      type: "POST", 
      url: "someUrl.aspx?webmethod", 
      data: '{"foo":"fooValue"}', 
      contentType: "application/json;", 
      dataType: "json", 
      } 

Veuillez apporter quelques précisions à ce sujet.

Mise à jour: Voici un exemple de code sans tableaux qui fonctionne:

[WebMethod] 
public static string SaveUserNew(string id) 
{ 
    return "0"; 
} 

     var jdata = '{ "id": "3TWR3"}'; 

     $.ajax({ 
      type: "POST", 
      url: "UserMgmt.aspx/SaveUserNew", 
      data: jdata, 
      contentType: "application/json;", 
      dataType: "json", 
      traditional: true     
      } 
     }); 

Mon intention est d'écrire un code dans un style similaire où je passe des tableaux à ma méthode Web.

+0

double possible de [Passage tableau de chaînes à WEBMETHOD avec nombre d'arguments variables en utilisant jQuery AJAX] (http://stackoverflow.com/questions/7971393/passing -array-of-strings-to-webmethod-avec-variable-number-of-arguments-using-jq) – weir

Répondre

0

Vous devez
1) affecter le paramètre de données pour avoir un objet avec les propriétés id et rôles.
2) affecter à la propriété roles un tableau de chaînes.
3) Définissez le paramètre traditionnel sur true tout en passant des options à l'appel ajax.

par exemple:

$.ajax({    
    type: "POST",    
    url: "someUrl.aspx?webmethod",    
    data: { 
     "id":"1", 
     "roles":[ 
      "Admin", 
      "Something", 
      "Another Thing" 
     ] 
    }, 
    contentType: "application/json;",    
    dataType: "json", 
    traditional: true //############################# 
} 
+0

J'ai le tableau dans mon code javascript sous forme de tableau. Je me demande quel est le moyen le plus simple de l'intégrer dans les données ... Et pourquoi avez-vous ajouté «traditionnel: vrai» au code? –

+0

Lorsque j'utilise ce code, j'obtiens l'erreur suivante: "primitive JSON invalide:" id " –

+0

Vérifiez le lien http://jquery14.com/day-01/jquery-14#backwards pour le besoin de paramètre traditionnel. Net – Chandu

2

passage à webmethod est param un peu délicat. Essayez celui

[WebMethod] 
public static string GetPrompt(string[] name) 
{ 

    return "Hello " + name[0] + " and " + name[1]; 
} 

JScript

var param = "{'name':['jack', 'jill']}"; 
var option = { 
    error: function(request, status, error) { 
     alert(error); 
    }, 
    cache: false, 
    success: function(data, status) { 
     alert(data.d); 
    }, 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    data: param, 
    dataType: "json", 
    url: "../Server/ArrayParam.aspx/GetPrompt" 
}; 

$.ajax(option); 
Questions connexes