2013-06-03 4 views
0

Я пытаюсь написать приложение ajax с использованием C# backend. Для вызовов ajax я использую jquery. Он отлично работает с IE и Google Chrome, но он дает 400 плохих запросов, когда я пытаюсь открыть его с помощью Firefox. Вот передний конец кодC# ajax post 400 плохой запрос firefox только

$.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" }); 
} 

}

Я не понимаю, что эта ошибка.

Заранее спасибо.

+0

Используйте скрипач или провода, чтобы узнать разницу. – Aneri

+0

Попробуйте очистить 'cache: false'. – Jai

+0

Если вы откроете Firebug, что он отобразит в качестве запроса? – aquaraga

ответ

0

Попробуйте использовать скрипач. http://fiddler2.com. Кроме того, использование Bodystyle = WebMessageBodyStyle.Bare и Method = «POST»

0

Можете ли вы попробуйте добавить следующую строку в реализации сервиса, прежде чем вернуть Json:

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

После этого снимите сессию Firefox/cookie (или даже лучше, откройте FF в режиме «Частный просмотр») и снова нажмите URL-адрес.

Смежные вопросы