Jquery Ajax调用适用于除10之外的所有浏览器

时间:2012-10-27 15:56:31

标签: ajax internet-explorer-10

以下ajax调用适用于IE10以外的所有浏览器(除非我将其设置为IE9标准模式) 我用小提琴手看着它,看起来似乎没有通过ie10任何想法传递参数?

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
    });

抛出以下错误

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)

5 个答案:

答案 0 :(得分:4)

这似乎是jQuery与IE10(至少Windows 7预览版)中的一个错误。 POST数据没有在请求中发送,我已经将错误的详细信息记录到jQuery:http://bugs.jquery.com/ticket/12790#comment:18

更新:在我的情况下,免费下载管理器中的一个错误导致了IE10中的问题。他们有fixed the issue(3.9.2 build 1281.- 2012年12月26日),所以它很好玩。如果您阅读上面jQuery链接中的注释,您可以看到有人选择了该注释并卸载FDM也纠正了该问题。所以它不是IE10或jQuery的问题,而是一个改变正常行为的附加组件。

答案 1 :(得分:2)

就我而言,下载Accelerator Plus是原因。卸载DAP解决了该问题。

答案 2 :(得分:1)

我知道这个问题很久以前被问到了,但我想补充一下我的答案。

这不是IE或jquery的错误。某些下载管理器(如 DAP,FDM和IDM )负责此问题(即使已禁用)。删除这些下载管理器将起作用。

问题是这些下载管理器有一些不完整的某些URLMon接口,而会干扰POST上传

很少有人报告Google Gears也对此问题负责。禁用后,问题将解决。(未测试)

答案 3 :(得分:0)

在ajax请求中每个POST发送数据在IE10中不起作用(即使在我的情况下,没有安装可能会干扰IE10的其他程序)。在ajax请求中每个GET发送数据对我来说很有用。

首先根据JavaScript错误控制台,这似乎是一个jquery问题和JSON数据的问题(如错误的编码或非法字符或无效的json),分别在响应中发送回json数据时,但都是用json数据很好。然后我意识到POST数据没有被发送,我将jquery $ .ajax调用中的“type”参数改为“GET”,这解决了问题。

答案 4 :(得分:0)

我在IE10 / jQuery 1.11.1中使用FormData对象的Ajax POST请求遇到了同样的问题。 POST数据和文件附件都没有发送到服务器。只发送了URL参数。

我正在使用此补丁向jQuery Ajax添加进度回调:

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

如果没有补丁,请求在IE10中完美运行。

该补丁在所有其他浏览器中都能正常运行。