ASP.NET - Каков правильный подход к веб-сервисам на основе JSON с помощью jQuery? - PullRequest
5 голосов
/ 12 ноября 2008

Как правильно преобразовать веб-службы ASP.NET SOAP в ответы на основе JSON? ... а потом вызывать их из jQuery?

Что такое "лучшие практики" при интеграции AJAX и ASP.NET на основе jQuery? Статьи? Книги?

Ответы [ 3 ]

3 голосов
/ 12 ноября 2008

В следующей статье Расширение существующей веб-службы ASP.NET для поддержки JSON Бобби Соаресом на codproject.com рассказывает об использовании атрибутов пользовательских методов для достижения желаемого результата.

3 голосов
/ 12 ноября 2008

преобразование JSON в классы .NET можно выполнить с помощью System.Runtime.Serialization и System.Runtime.Serialization.JSON . Я подозреваю, что вы больше заинтересованы в настройке вызовов функций от клиента к серверу. Я думаю, что стоит попробовать этот урок .

В этом руководстве вам необходимо добавить файл .asmx для веб-службы. В файле asmx вы сможете создавать функции, вызываемые из клиентского скрипта. Ваши страницы ASP.NET также могут ссылаться на сгенерированный клиентский скрипт для вызова функций .asmx.

Если вы действительно хотите выполнить сериализацию JSON, вы также можете использовать следующее:

using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

public class JsonSerializer
{
    // To make a type serializeable, mark it with DataContractAttribute
    // To make a member of such types serializeable, mark them with DataMemberAttribute
    // All types marked for serialization then need to be passed to JsonSerialize as
    // parameter 'types'

    static public string JsonSerialize(object objectToSerialize, params Type[] types)
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(
            types[0], types.Skip(1));

        MemoryStream ms = new MemoryStream();
        serializer.WriteObject(ms, objectToSerialize);
        ms.Seek(0, SeekOrigin.Begin);
        StreamReader sr = new StreamReader(ms);
        return sr.ReadToEnd();
    }
}
0 голосов
/ 12 ноября 2008

Некоторое время я использовал ASP.Net Ajax, но никогда не беспокоился о связи JSON или XML. Вместо этого я использовал Web-сервисы для прямого возврата содержимого, которое вы можете установить с помощью innerHTML.

Это очень легко реализовать. Просто создайте файл веб-службы (ASMX) и объявите ваши методы как WebMethods (установите атрибут WebMethod).

Теперь вы можете вызывать свой веб-сервис из кода Javascript, почти как обычная функция.

Результаты функции будут возвращены функции обратного вызова. Это структура

//Webmethod returns some HTML content
Myservice.DoSomething(myParam, callBackFunction);

//Content is set on the webpage
function callBackFunction(result){
  document.getElementById('myElemID').innerHTML = result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...