1

ajaxを使用してクライアント側からWCFサービスを呼び出そうとすると、400BadRequestエラーが発生します。以下は私のコードです、

[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json)]
string[] GetUser(string Id);

$.ajax({
                type: "POST", //GET or POST or PUT or DELETE verb
                url: "http://localhost:58055/Service1.svc/GetUser", 
                crossDomain: true,
                data: '{"Id": "3"}',
                contentType: "application/json; charset=utf-8", 
                dataType: "json", //Expected data format from server
                processdata: true, //True or False
                success: function (msg) {//On Successfull service call
                    alert(msg.GetUserResult[0]);
                    console.log("success " + msg);
                },
                error: function (msg) {//On Successfull service call
                    console.log(msg);
                }
            });

どんな洞察も本当に役に立ちます...

4

2 に答える 2

0

ajax api ドキュメントによると、デフォルトのコンテンツ タイプは「application/x-www-form-urlencoded」です。JSON を送信する場合、コンテンツ タイプは「application/json;」にする必要があります。charset=utf-8' ただし、WCF はそれを好みません。同じエラー メッセージが表示され、コンテンツ タイプを削除すると、このエラーが発生しなくなりました。ところで、crossDomain を true に設定していることに気付きました。この他の質問はそのオプションに関連しています。

于 2012-11-28T16:16:33.353 に答える
0

最初に試す必要があるのは、fiddler を使用して URL にアクセスし (データも投稿できるようにするため)、同じエラーが発生するかどうかを確認することです。

クロス ドメイン リクエストを行っていますか。例から、あなたはそうではないようです。削除していただけますか

crossDomain: true,

行して、jquery を再試行してください。

processdata のように不要なオプションは他にもあります。次のコードを使用して、機能するかどうかを確認することをお勧めします。

$.ajax({
            type: "POST",
        // the url to the service - 
        url: "url",
        // the format that the data should be in when
        // it is returned
        contentType: "json",
            data: '{"Id": "3"}',
        // the function that executes when the server
        // responds to this ajax request successfully
        success: function(data) {

        // put the JSON response in the employees table

        }
于 2012-07-13T06:15:19.510 に答える