为什么我的JSON值没有出现在WCF操作中?

本文关键字:WCF 操作 JSON 我的 为什么 | 更新日期: 2023-09-27 18:08:36

我有问题获得值我的WCF操作从我的JQuery代码。我有一个WCF操作,声明如下:

[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public ResultList<MyResult> FindResults(string latitude, string longitude)
{
  // latitude and longitude are always "0" here.
}
我的JQuery代码如下所示:
var latitude = GetLatitude();
var longitude = GetLongitude();
alert(latitude + ", " + longitude);
var json = { "latitude": latitude, "longitude": longitude };
$.ajax({
  url: "/services/myService.svc/FindResults",
  contentType: "application/json; charset=utf-8",
  data: json2string(json),
  dataType: "json",
  success: findResultsCompleted,
});

当我查看Fiddler时,我收到了预期的200状态码。请求头显示:

GET /services/myService.svc/FindResults?{"latitude":33.041599,"longitude":-119.298798}

我做错了什么?为什么经纬度在操作代码中总是0 ?谢谢你!

为什么我的JSON值没有出现在WCF操作中?

GET请求期望参数为?Param=Value

你可以把你的OperationContract切换到WebInvoke,你的JS服务调用到POST

或者如果你想坚持使用GET,你可以删除stringify调用,jQuery应该负责使GET参数正确

如果它们是字符串,为什么json不在引号中?

"latitude":33.041599,"longitude":-119.298798

相对
"latitude":"33.041599","longitude":"-119.298798"

你可以改变你的json括在引号值或改变你的操作接受double s?