Веб-сервис asp.net и дополнительные результаты в формате json! - PullRequest
0 голосов
/ 27 июля 2010

Я хочу вызвать метод веб-сервиса в javascript.(asp.net 3.5)

Я отследил результат с помощью firebug.вот результат:

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

Я думаю, что правильный результат должен выглядеть следующим образом:

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

Что такое цитата до и после скобки?

// отредактировано: в 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);
    }

и в файле 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; 

спасибо.

мир

Ответы [ 2 ]

1 голос
/ 27 июля 2010

Вам не нужно выполнять сериализацию вручную в веб-сервисе; попробуйте использовать что-то вроде этого:

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

Поскольку вы используете string в качестве возвращаемого объекта, он преобразует его для вас при сериализации (еще раз).

1 голос
/ 27 июля 2010

Цитата указывает, что это строка, поэтому:

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

b ["d"] вернет строку вместо массива объектов.Вы можете обойти это с помощью следующего в javascript:

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

, который превратит строку в массив объектов.Или лучше - опубликовать код, который возвращает это, и мы можем попытаться выяснить, почему он возвращается в виде строки.

...