[英]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.