为什么我的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 ?谢谢你!
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?