c#ajax只发布400个错误请求firefox

时间:2013-06-03 10:19:32

标签: c# jquery ajax wcf firefox

我正在尝试使用C#后端编写一个ajax应用程序。对于ajax调用我正在使用jquery。它适用于IE和谷歌浏览器,但当我尝试使用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" });
}

}

我不明白错误是什么。

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试使用fiddler。 http://fiddler2.com。还可以使用BodyStyle = WebMessageBodyStyle.Bare和Method =“POST”

答案 1 :(得分:0)

在返回Json之前,您可以尝试在服务实现中添加以下行:

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

在此之后,清除Firefox会话/ cookie(甚至更好,在“隐私浏览模式”下打开FF) - 然后再次点击网址。