2010-10-13 6 views
0

J'ai l'appel JSON suivant, les données que je passe semblent être correctement stringifiées de ce que je regarde, cependant, je ne semble pas avoir la bonne syntaxe pour traiter le paramètre dans la méthode web publique.accéder aux paramètres d'un appel JSON dans la méthode web

Voici l'appel JSON:

<script type="text/javascript" language="javascript"> 

    var qs = new Querystring(); 

    var v1 = qs.get("TorVName"); 

    var jsonData = JSON.stringify(v1); 

     $().ready(function() { 
      $.ajax({ 
       type: "POST", 
       url: "Default.aspx/GetColumns", 
       data: jsonData, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
     var optString = '<option value="-1">Select Column</option>'; 
     $.each(msg.d, function(index, item) { 
     optString += '<option value="' + item + '">' + item + '</option>'; 
     }); 
     $('select[name^=DDLColumns]').html(optString); 
       }, 
       error: function() { 
        alert("Failed to load columns"); 
       } 
      }); 
     }); 
</script> 

et est la méthode web cooresponding ici:

[WebMethod] 
    public static ArrayList GetColumns(string TorVName) 
    { 
     String cnstr = "myconnect string"; 
     string Sql = String.Empty; 
     ArrayList arlist = new ArrayList(); 
     SqlDataReader rdr = null; 
     SqlCommand cmd = null; 
     DataSet dset; 
     SqlConnection cn = new SqlConnection(cnstr); 
     cn.Open(); 
     dset = new DataSet("ds"); 
     dset.Clear(); 

etc etc ...

J'ai du mal à décider comment déboguer une méthode web puisque je ne peux voir que les actions côté client dans firebug.

toute aide sur la façon de recevoir et de traiter le paramètre dans la méthode web serait très appréciée.

Merci Deano

Répondre

0

Vous devez joindre Visual Studio à l'w3wp.exe qui exécute votre application web et de mettre un point d'arrêt.

L'autre possibilité est de mettre un System.Net traçage à la sortie de toutes les données qui entrent et sortent de l'application:

http://blogs.msdn.com/b/dgorti/archive/2005/09/18/471003.aspx

Mettre les choses dans le web.config.

0

Vos données doit être en nom/valeur format paire, comme ceci:

var jsonData = JSON.stringify({ TorVName: qs.get("TorVName") }); 

La méthode Web est à la recherche de la propriété nommée TorVName, vous avez besoin d'une paire nom/valeur avec ce pour votre JSON demande, pas juste la chaîne. Dans le code ci-dessus le TorVName: est parce que c'est ce que le paramètre est nommé dans la méthode web.

0

Comme d'autres l'ont indiqué, vous devez avoir un objet json avec un paramètre de torVName puisque htat est ce que votre méthode web recherche. un moyen facile de le faire est var data = {}; // créer un nouvel objet data ['torVName'] = actual datta '; puis dans votre appel ajax vous pouvez simplement dire données: JSON.stringify (données)

0

les gars devrait peut-être lire avant de suggérer les choses stringify dans IE8:

retourne JSON « undefined » quand stringifying un objet qui a été créé dans une fenêtre différente Voir l'exemple de test au http://kinsey.no/examples/ie8_json_bug/

Questions connexes