1

サーバ側:

[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を取得できませんでした。

4

2 に答える 2

1

これは有効なJSONではありません:

var requestData= "{CountryIds:[1,2]}";

すべての文字列は引用符で囲む必要があります。例:

var requestData= '{"CountryIds":[1,2]}';
var requestData = JSON.stringify({CountryIds:[1,2]}); //same as above

これは、POSTを介して送信するもの$.ajaxであり、クエリ文字列にシリアル化する必要があるため、GET要求で複合型を処理する規則がないため、実行を検討する可能性があります。

複合型をqueryStringとして送信する場合は、URLを自分で作成する必要があります。ServiceStackは、JSV形式を使用して、GETリクエストの複雑なタイプを処理します(CSVエスケープを使用したJSON、つまり引用符を使用しないJSON)。

したがって、リクエストは次のようになります。

var requestData = "[1,2]";
$.getJSON("/api/x?CountryIds=" + requestData, function (b) {
});

要約:JSONを送信する場合は、ajaxPOSTを介して送信する必要があります。

于 2012-07-18T15:37:15.177 に答える
0
var requestData= "{CountryIds:[1,2]}";

でなければなりません

var requestData= {CountryIds:[1,2]};

しかし、それでもgetJSONには問題があります。アレイでは動作しませんか?

jQueryを使用してリスト/配列をパラメーターとして送信するgetJsonはその解決策です:)

これを追加:

 $.ajaxSetup({
    traditional: true
});
于 2012-07-18T14:14:07.123 に答える