服务器端:
[RestService("/x")]
public class XFilter
{
public long[] CountryIds { get; set; }
}
public class XService : RestServiceBase<XFilter>
{
private const int PageCount = 20;
public override object OnGet(XFilter request)
{
Debugger.Break(); // request is always default at this point !!
return a;
}
}
客户端:
<script type="text/javascript">
var requestData= "{CountryIds:[1,2]}";
$.getJSON("/api/x", requestData, function (b) {
});
它必须如此简单,但我无法通过这种方法在服务器端获得XFilter。
答案 0 :(得分:1)
这是无效的JSON:
var requestData= "{CountryIds:[1,2]}";
必须引用所有字符串,例如:
var requestData= '{"CountryIds":[1,2]}';
var requestData = JSON.stringify({CountryIds:[1,2]}); //same as above
这将是您通过$.ajax
POST发送的内容,您可能会考虑这样做,因为没有约定来处理GET请求中的复杂类型,因为它必须将其序列化为queryString。
如果要将复杂类型作为queryString发送,则需要自己构建URL。 ServiceStack使用其JSV Format来处理GET请求中的复杂类型(这只是带有CSV转义的JSON,也就是没有引号的JSON)。
所以你的请求现在是:
var requestData = "[1,2]";
$.getJSON("/api/x?CountryIds=" + requestData, function (b) {
});
Re-Cap:如果你想发送JSON,你需要通过ajax POST这样做。
答案 1 :(得分:0)
var requestData= "{CountryIds:[1,2]}";
必须
var requestData= {CountryIds:[1,2]};
<!/ P>
但仍然存在getJSON问题。它不适用于数组?
Send list/array as parameter with jQuery getJson是解决方案:)
添加:
$.ajaxSetup({
traditional: true
});