2009-12-26 6 views
0

environnement utilisé: ASP.NET, jQueryobjet complexe d'un appel AJAX

je l'appel AJAX suivant:

var tempVar = JSON.stringify({plotID:currentId});    

$.ajax({ 
     type: "POST", 
     url: "testPage.aspx/getPlotConfig", 
     data: tempVar, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
     $('#xDimLbl').text(msg.xDim); 
     $('#bDimLbl').text(msg.bDim); 
     } 
}); 

Le code a derrière la méthode getPlotConfig (chaîne plotID) définie comme

public static string getPlotConfig(string plotID) 
{ 
     string x = "T1"; 
     string b = "T2"; 
     return Json(new { xDim= x, bDim= b }); 
} 

questions:

  1. Lorsque je fais une construction, j'obtiens l'erreur: Le nom 'Json' n'existe pas dans le contexte actuel Quel espace de noms est incorrect?
  2. Avec les deux chaînes x et b, je voudrais retourner une table de hachage dont la clé est une chaîne et une valeur est une liste de chaînes séparées par des virgules. Comment puis-je faire cela et comment accéder à chaque paire de valeurs clés du côté client?

acclamations

Répondre

2

Cela pourrait être la méthode référaient Json utilisée dans le contrôleur ASP.NET MVC. Comme votre fonction getPlotConfig est statique, vous ne pouvez pas utiliser cette méthode. Vous pouvez jeter un oeil à PageMethods. Voici un exemple:

[WebMethod] 
[ScriptMethod] 
public static object getPlotConfig(string plotID) 
{ 
    var hash = new Dictionary<string, string>() 
    { 
     { "key1", "valueA,valueB" }, 
     { "key2", "valueC,valueD" }, 
    }; 
    var x = "T1"; 
    var b = "T2"; 
    return new { xDim = x, bDim = b, hash = hash }; 
} 

Et en javascript:

success: function(msg) { 
    $('#xDimLbl').text(msg.d.xDim); 
    $('#bDimLbl').text(msg.d.bDim); 
    for(var key in msg.d.hash) { 
     var value = msg.d.hash[key]; 
     // Do something with key and value... 
    } 
} 
+0

Merci Darin. La construction fonctionne bien après avoir utilisé le Serializer. Cependant, je ne suis pas capable de lire les valeurs dans jQuery, c'est-à-dire $ ('# xDimLbl'). Text (msg.xDim); et $ ('# bDimLbl'). text (msg.bDim) ;. Ai-je besoin de désérialiser le msg avant d'en interpréter les éléments? – Arnkrishn

+0

Avez-vous un message d'erreur? Pourriez-vous publier la réponse JSON exacte du serveur? –

+0

Avez-vous activé les méthodes de page en incluant un gestionnaire de script dans votre page aspx: '' –