我在从JQuery代码获取WCF操作的值时遇到问题。我有一个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?谢谢!
答案 0 :(得分:0)
如果它们是字符串,为什么不是引号中的json?
"latitude":33.041599,"longitude":-119.298798
而不是
"latitude":"33.041599","longitude":"-119.298798"
您是否可以更改json以将值括在引号中或更改操作以接受double
s?
答案 1 :(得分:0)
GET
次请求需要?Param=Value
您可以将OperationContract
切换为WebInvoke
,将您的JS服务呼叫切换为POST
或者如果你想坚持GET
,你可以删除stringify
调用,jQuery应该正确地设置GET
参数。