0

C# バックエンドを使用して ajax アプリケーションを作成しようとしています。ajax 呼び出しには jquery を使用しています。IE と Google Chrome では正常に動作しますが、Firefox を使用して開こうとすると 400 の不正な要求が返されます。これがフロントエンドコードです

$.ajax({
        url: "http://localhost:25028/Service.svc/Fun",
        type: "POST",
        dataType: "json",
        timeout: 10000,
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({input: 'input'}),
        crossDomain: true,
        success: function (input) {
            var data = JSON.parse(input);
            alert(data.data);
        },
        error: function (input, textstatus, errorThrown) {
            alert(textstatus);
        }
    });

また、関連する場合は、web.config で次のバインディングを使用しています。

    <behavior name="EndpBehavior">
      <webHttp />
    </behavior>


  <service behaviorConfiguration="ServiceBehavior" name="Service">
    <endpoint address="" binding="webHttpBinding" contract="Service" behaviorConfiguration="EndpBehavior"/>
  </service>

関数定義は次のとおりです。

[OperationContract]
[WebInvoke(Method = "*", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public string Fun( string input )
{
    return new JavaScriptSerializer().Serialize(new { data = "this is data" });
}

}

何が間違いなのか分かりません。

前もって感謝します。

4

2 に答える 2

0

Json を返す前に、サービスの実装に次の行を追加してみてください。

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "x-requested-with");

この後、Firefox のセッション/Cookie をクリアし (または、FF を「プライベート ブラウジング モード」で開くとより効果的です)、再度 URL にアクセスします。

于 2013-06-03T11:01:13.313 に答える