2010-07-27 6 views
0

Je souhaite appeler une méthode de service Web en javascript. (asp.net 3.5)asp.net web service et qouatation supplémentaire en résultat json!

J'ai tracé le résultat avec firebug. voici le résultat:

{"d":"[{\"TI\":\"www\"},{\"TI\":\"www1\"}]"} 

Je pense que le résultat correct devrait comme ce

{"d":[{\"TI\":\"www\"},{\"TI\":\"www1\"}]} 

quelle est la citation avant et après le support?

// édité: dans webserivce:

public class Test 
    { 
     public Test(string t){T1 = t;} 
     public string T1 { set; get; } 
    } 

    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true, XmlSerializeString = false)] 
    public string Load(string e) 
    { 
     List<Test> post = new List<Test> { new Test("www"), new Test("www1") }; 
     return JsonConvert.SerializeObject(post); 
    } 

et dans le fichier js:

var store = new Ext.data.JsonStore({ 
     proxy: new Ext.data.HttpProxy({ 
      url: '/core/webservice/service.asmx/Load', 
      method: 'GET', 
      headers: { 'Content-type': 'application/json' } 
     }), 
     root: 'd', 
     id: 'Id', 
     fields: ['TI'] 
    }); 
    store.load({ params: { e: ''} }); 
    return; 

merci.

mir

+0

J'ai testé le JSONConvert.Serialize et cela fonctionne bien. Pouvez-vous supprimer du proxy cette ligne et essayez à nouveau: en-têtes: {'Content-type': 'application/json'} – sTodorov

Répondre

1

Vous ne devriez pas avoir à sérialiser manuellement dans le service Web; envisager d'utiliser quelque chose comme ceci:

public List<Test> Load(string e) 
{ 
    List<Test> post = new List<Test> { new Test("www"), new Test("www1") }; 
    return post; 
} 

Puisque vous utilisez string comme objet de retour, il convertira comme pour vous lors de la sérialisation il (encore une fois).

1

La citation indique que ceci est une chaîne, donc:

var b = {"d":"[{\"TI\":\"www\"},{\"TI\":\"www1\"}]"}; 

b [ "d"] retournera une chaîne au lieu de tableau d'objets. Vous pouvez contourner ce qui suit dans le javascript:

var c = eval(b["d"]); 

qui transformera la chaîne en un tableau d'objets. Ou la meilleure façon, publiez le code qui retourne ceci et nous pouvons essayer de comprendre pourquoi il est retourné comme une chaîne.

+0

cher sTodorov J'ai ajouté le code source, merci – Mironline

Questions connexes