2011-09-15 32 views
1

JQueryコードからWCF操作に値を取得する際に問題が発生しています。WCF操作でJSON値が表示されないのはなぜですか?

[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, 
}); 

私はフィドラーで見てみると、予想通り、私は200のステータスコードを受け取り、私は次のように宣言してWCFの操作を持っています。要求ヘッダーには次の情報が表示されます。

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

私は間違っていますか?オペレーションコードで緯度と経度が常に0になるのはなぜですか?ありがとうございました!

答えて

0

GET要求はあなたがGETに固執したい場合、または単にstringifyコールとjQueryを削除することができます?Param=Value

のようなパラメータは、あなたがPOST

にごOperationContractWebInvokeへとあなたのJSのサービスコールを切り替えることができ期待しますGETパラメータを正しく処理する必要があります。

+0

ビンゴ。ご協力ありがとうございました。 – user609886

0

文字列の場合は、なぜjsonが引用符で囲まれていないのですか?

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

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

とは対照的に、あなたはdouble Sを受け入れるように引用符で値を囲むか、あなたの操作を変更するには、あなたのJSONを変更することができますどちらか?

+0

値を引用符で囲むと、操作コードで緯度と経度のパラメータがnullになります。 – user609886

関連する問題