2010-02-17 6 views
1

Je n'ai jamais utilisé le .ajax $() et si vous voyez des mistypes laissez-moi savoir;)

Im en utilisant .ajax jQuery $() pour appeler un webmethod avec JSON.

La définition simple du webmethod devrait ressembler à ceci:

[WebMethod] 
public static bool MyMethod(string a, string b, string c) { 
    ... 
} 

La valeur du paramètre de données dans .ajax de $() est:

myData => « 'a': » val_a », 'b': 'val_b', 'c': 'val_c' »

Voici mon appel ajax:

$.ajax({ 
      type: "POST", 
      url: "AspDotNetPage.aspx/MyMethod", 
      data: "{"+myData+"}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       alert(msg);     
      } 
      }); 

maintenant, le tr partie icky vient. Je dois ajouter un paramètre supplémentaire à ma méthode web. Je dois envoyer à ma webmethod toutes les cases à l'intérieur d'un certain div, leurs noms et s'ils sont cochés. J'ai le code Jquery pour sélectionner ces valeurs. Voici où je vois dans la programmation code-behind un paramètre supplémentaire normale serait comme

[WebMethod] 
public static bool MyMethod(string a, string b, string c, Dictionary<string,bool> dict) { 
     ... 
} 

qui détient ma case texte valeur et si elle est cochée.

Je n'ai pas la moindre idée de la façon dont fonctionne JSON, tout ce que je sais, c'est que je dois faire ce travail bientôt. Il est probable qu'un certain type de tableaux javascripts multidimensionnels soit probablement utilisé. Si vous avez des idées sur la meilleure approche pour cette question, je serais heureux!

/Daniel Svensson, Suède

+0

En supposant que ce soit sur ASP.NET, semble le même que http://stackoverflow.com/questions/1527422/send-json-to-webmethod – Nickolay

Répondre

1

si vous faites vos bools annulable, vous pouvez simplement utiliser la méthode .serialize() sur toutes vos valeurs, et les cases qui ne sont pas dans les données affichées seront simplement ignorées par la méthode:

[WebMethod] 
public static bool MyMethod(string a, string b, string c, bool? chkbox1, bool? chkbox2....) { 
     ... 
} 

vous auriez besoin d'ajouter un bool? paramètre pour toutes vos cases à cocher possibles sur la page. c'est la meilleure façon de fournir une bonne méthode pour les tests, etc. si vous vous vouliez vraiment pouvez ajouter un autre objet à vos données, par exemple

data: { 'a':'val_a', 'b':'val_b','c':'val_c', 'dict': { 'chk1', 'chk2', 'chk3' } } 

où chk1, Chk2, chk3 est un tableau que vous avez construit des cases à cocher cochées, et votre dict dict deviendrait simplement un tableau de chaînes.

Questions connexes