2012-10-27 11 views
5

Następujące wywołanie ajax działa we wszystkich przeglądarkach z wyjątkiem IE10 (chyba że ustawię go w trybie standardowym IE9) Spoglądam na to z klawiszem i wydaje się, że ten parametr nie jest przejazdem w ie10 pomysłów?Połączenie Ajax Jquery działa we wszystkich przeglądarkach z wyjątkiem np. 10

var paramArray = '{"ID":1}'; 

$.ajax({ 
     type: 'POST', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     url: '/assets/services/coreWebServices.svc/GetCategoriesWithoutColumns', 
     data: paramArray, 
     success: successFn, 
     error: errorFn 
    }); 

wyrzuca następujący błąd

The OperationFormatter could not deserialize any information from the Message because the Message is empty (IsEmpty = true). 
    at System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeRequest(Message message, Object[] parameters) 

System.Runtime.Serialization.SerializationException: Error in deserializing body of request message for operation 'GetCategoriesWithoutColumns'. The OperationFormatter could not deserialize any information from the Message because the Message is empty (IsEmpty = true). 
    at System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) 

System.ServiceModel.CommunicationException: Error in deserializing body of request message for operation 'GetCategoriesWithoutColumns'. The OperationFormatter could not deserialize any information from the Message because the Message is empty (IsEmpty = true). 
    at System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)\u000d\u000a 
    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)\u000d\u000a 
    at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) 
+3

Czy możesz zapewnić skrzypce? –

+0

której części chcesz? – DeniroSA

+2

Czy masz zainstalowany dodatek "Free Download Manager" (lub jakikolwiek podobny dodatek)? Jest znany z tego, że powoduje ten problem (nawet jeśli wyłączysz go w dodatkach Manage Adda). – EricLaw

Odpowiedz

4

Wydaje się to być błąd w jQuery z IE10 (przynajmniej Windows 7 Preview Release). Dane POST nie zostanie wysłana w żądaniu, mam zalogowany szczegółów bug do jQuery: http://bugs.jquery.com/ticket/12790#comment:18

UPDATE: W moim przypadku był to błąd w Free Download Manager, który spowodował problem w IE10. Mają fixed the issue (3.9.2 kompilacja 1281. - 26 grudnia 2012), dzięki czemu gra ładnie. Jeśli przeczytasz komentarze w powyższym linku jQuery, zobaczysz, że ktoś też je wybrał i odinstalowanie FDM również rozwiązało problem. Więc nie jest to problem IE10 lub jQuery, ale raczej dodatek zmieniający normalne zachowanie.

+0

Czy "Free Download Manager" to dodatek do przeglądarki lub oddzielne oprogramowanie? – JustinJason

+0

@JustinJason: FDM jest oddzielnym oprogramowaniem (http://www.freedownloadmanager.org/), ale instaluje także dodatek do integracji z IE, taki jak przechwytywanie żądań pobierania i kliknięć linków. To właśnie ten dodatek zakłócał połączenia AJAX w IE10. – BrutalDev

2

W moim przypadku przyczyną była Download Accelerator Plus. Odinstalowanie DAP rozwiązało problem.

1

Wiem, że to pytanie zostało zadane przez długi czas, ale chciałem dodać moją odpowiedź.

To nie jest błąd IE lub jquery. Niektóre menedżer pobierania, taki jak DAP, FDM i IDM, jest odpowiedzialny za ten problem (nawet jeśli jest wyłączony). Usunięcie tych menedżerów pobierania może działać.

Kwestia jest taka, że ​​to menedżer pobierania ma niepełną thunk niektórych interfejsów Urlmon, a to zakłóca przesłane POST.

Niewielu użytkowników również zgłasza, że ​​Google Gear jest również odpowiedzialny za ten problem. Po wyłączeniu problem zostanie rozwiązany. (Nie testowane)

0

Wysyłanie danych na POST w żądaniu ajaxowym nie działa w IE10 (nawet jeśli w moim przypadku nie są zainstalowane żadne dodatkowe programy, które mogłyby zakłócać działanie IE10). Przesyłanie danych za GET w żądaniu ajax działa dla mnie.

Początkowo zgodnie z konsolą błędów JavaScript wydawało się, że jest to problem jQuery i problem z danymi JSON (np. Nieprawidłowe kodowanie lub niedozwolone znaki lub nieprawidłowy json), odpowiednio, podczas wysyłania danych json w odpowiedzi, ale wszystkie było dobrze z danymi json. Wtedy rozpoznałem, że dane POST nie są wysyłane i zmieniłem parametr "type" w wywołaniu jquery $ .ajax na "GET", co naprawiło problem.

0

Wystąpił ten sam problem z żądaniem Ajax POST obiektu FormData w IE10/jQuery 1.11.1. Ani dane POST, ani załączniki plików nie zostały wysłane na serwer. Wysłano tylko parametry adresu URL.

używałem tej poprawki, aby dodać zwrotnego postępów jQuery Ajax:

https://github.com/englercj/jquery-ajax-progress

Bez plastra wniosek działa idealnie w IE10.

Poprawka działa doskonale we wszystkich innych przeglądarkach.

Powiązane problemy