2012-10-27 2 views
5

다음 ajax 호출은 IE10을 제외한 모든 브라우저에서 작동합니다 (IE9 표준 모드로 설정하지 않은 경우). 필자와 함께 보았을 때 매개 변수가 아닌 것처럼 보입니다. ie10에서 어떤 아이디어가 통과 되었습니까?Jquery Ajax 호출은 ie 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 
    }); 

다음과 같은 오류이 IE10과 jQuery를 버그 (적어도 Windows 7의 프리뷰 버전을) 것 같다

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

아마도 바이올린을 제공 할 수 있습니까? –

+0

어느 부분을 원하십니까? – DeniroSA

+2

"무료 다운로드 관리자"애드온 (또는 이와 유사한 애드온)을 설치 했습니까? 이 문제가 발생하는 것으로 알려져 있습니다 (IE의 Manage Add-ons에서 해제 한 경우에도 마찬가지 임). – EricLaw

답변

4

에게 던졌습니다. POST 데이터가 요청에서 전송되지 않습니다, 내가 jQuery를에 버그의 세부 사항을 기록했습니다 : http://bugs.jquery.com/ticket/12790#comment:18

UPDATE : 내 경우는 IE10에서 문제가 발생 무료 다운로드 관리자의 버그이었다. 그들에게는 fixed the issue (3.9.2 빌드 1281 - 2012 년 12 월 26 일)이있어서 좋았습니다. 위의 jQuery 링크에있는 주석을 읽으면 다른 사람도이 파일을 선택했음을 알 수 있으며 FDM을 제거하면 문제가 해결 된 것입니다. 따라서 IE10 또는 jQuery의 문제는 아니지만 정상 동작을 변경하는 추가 기능입니다.

+0

"무료 다운로드 관리자"는 브라우저 추가 기능입니까, 별도의 소프트웨어입니까? – JustinJason

+0

@JustinJason : FDM은 별도의 소프트웨어 (http://www.freedownloadmanager.org/)이지만 다운로드 요구 및 링크 클릭 차단과 같은 IE와 통합 할 수있는 추가 기능도 설치합니다. 이 부가 기능은 IE10에서 AJAX 호출을 방해합니다. – BrutalDev

2

필자의 경우 Download Accelerator Plus가 원인이었습니다. DAP를 제거하면 문제가 해결되었습니다.

1

나는이 질문에 오랜 시간을 물었지만 내 대답을 추가하고 싶었다.

이것은 IE 또는 jquery의 버그는 아닙니다. DAP, FDM 및 IDM과 같은 일부 다운로드 관리자는이 문제를 담당합니다 (사용 중지 된 경우에도 마찬가지입니다). 이 다운로드 관리자를 제거하면 작동합니다.

문제는이 다운로드 관리자가 일부 URLMON 인터페이스의 불완전 썽크를 가지고 있다는 것입니다,이 는 POST 업로드 방해합니다.

Google Gears도이 문제에 대해 책임을지는 것으로 나타났습니다.

0

ajax 요청에서 POST 당 데이터를 보내는 것은 IE10에서 작동하지 않습니다 (제 경우로 IE10을 방해 할 수있는 추가 프로그램이 설치되지 않은 경우에도 마찬가지입니다). 대신 아약스 요청에 GET 당 데이터를 보내는 나를 위해 작동합니다.

JavaScript 오류 콘솔에 따르면 처음에는 응답에서 json 데이터를 보낼 때 jquery 문제와 JSON 데이터의 문제 (잘못된 인코딩이나 잘못된 문자 또는 잘못된 json과 같은 문제)가있는 것처럼 보였지만 모두 json 데이터로 괜찮 았어. 그런 다음 POST 데이터가 전송되지 않은 것을 확인하고 jquery $ .ajax 호출에서 "type"매개 변수를 "GET"으로 변경하여 문제를 해결했습니다.

0

IE10/jQuery 1.11.1에서 FormData 객체의 Ajax POST 요청과 동일한 문제가 발생했습니다. POST 데이터 나 첨부 파일이 서버로 전송되지 않았습니다. URL 매개 변수 만 보냈습니다.

내가 jQuery를 아약스로 진행 콜백을 추가하려면이 패치를 사용했다 :

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

을 요청 IE10에서 완벽하게 작동 패치없이.

이 패치는 다른 모든 브라우저에서 완벽하게 작동합니다.

관련 문제