繁体   English   中英

jQuery Ajax调用从WCF RIA REST服务返回null

[英]jQuery Ajax call returning null from WCF RIA REST service

我已经创建了WCF REST .NET 4服务并将其部署到本地IIS7 。如果我使用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。 我需要更改什么?

我一直在使用JSON数据类型广泛使用jQuery和Ajax,并且我相信您需要将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调试这些东西。 我可以确切看到正在发布到Web服务的内容以及返回的内容。 如果Web服务在抱怨,它在抱怨什么。

ASP.NET AJAX版本之间的重大更改中,了解为什么需要.d 简而言之,我认为它是包装器,因此,如果返回的数据是原始的文字JavaScript代码,则将其视为字符串而不是返回并执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM