jQuery Ajax-вызов, возвращающий ноль из службы WCF RIA REST - PullRequest
1 голос
/ 18 декабря 2010

Я создал WCF REST .NET 4 и развернул его на локальном IIS 7. Если я использую Fiddler и использовать конструктор запросов, я могу позвонить в службу и увидеть, что данные были возвращены в порядке.Если я попытаюсь нажать тот же REST-адрес в браузере, JSON не будет возвращен, но будет выглядеть так: XML .

Мой сервис выглядит так:

[OperationContract]
[WebGet(UriTemplate = "/{id}/details.json",
    ResponseFormat=WebMessageFormat.Json)]
public SampleItem Get(string id)
{
    return new SampleItem{ Id=1, StringValue="value from string"};
}

Мой web.config файл имеет небольшое изменение:

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" defaultOutgoingResponseFormat="Json"/>

Я пытаюсь вызвать службу, используя jQuery , например:

$(document).ready(function () {
    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        url: "http://wcf-rest/service1/1/details.json",
        dataType: "json",
        success: function (data) { alert(data); },
        error: function (e) { alert("error"); }
    });
}); // end .ready

Однако, null возвращается каждый раз.Что мне нужно изменить?

1 Ответ

1 голос
/ 18 декабря 2010

Я широко использую jQuery и Ajax с типом данных JSON, и я считаю, что вам нужно изменить data на data.d.См. Мой пример ниже.

function getMakes() {
    $.ajax({
        type: "POST",
        url: "../../WebService_VehicleAssignment.asmx/getAllVehicleMakes",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            var response = msg.d;
            $('#output').empty();
            $.each(response, function (vehicle, vehicle) {
                $('#output').append(new Option(vehicle.Make, vehicle.Id));
            });
        },
        failure: function (msg) {
            alert('failure');
        }
    });
}<br />

Я использую Firebug для отладки этого материала.Я точно вижу, что публикуется в веб-сервисе и что возвращается.И если веб-служба жалуется, на что она жалуется.

Узнайте, почему .d необходим в Разрывное изменение между версиями ASP.NET AJAX .Короче говоря, я считаю, что это обертка, поэтому возвращаемые данные обрабатываются как строка, а не возвращаются и выполняются, если это необработанный буквенный код JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...