jQuery从HTML页面发布到WCF web服务混乱



这里有一个jQuery/AAJAX问题的新手。基本上,我想向WCF web服务发布一个简单的字符串(例如"4,5"),该服务获取该字符串并创建一个表,然后将该表发送回浏览器。我已经创建并测试了WCF web服务,并调用了内置的VS2012客户端。没有问题-字符串输入,表输出-工作得很好。

在客户端(本例中是一个带有jQuery的HTML页面),我就没那么幸运了。根据教程中的POSTing示例,我发现WCF不接受JQuery的POSTing数据类型,并且在浏览器调试器中出现以下错误:

[14:02:36.071] POST http://localhost:58291/Service1.svc [HTTP/1.1 415 Cannot process the message because the content type 'application/x-www-form-urlencoded; charset=UTF-8' was not the expected type 'text/xml; charset=utf-8'. 4ms] 

我环顾四周,发现要么我更改WCF服务端(我可以在本地更改,但这是为其他人准备的,所以这不是一个选项!)要么我可以更改jQuery代码(这就是我想要做的)。

当我将JQuery端的contentType更改为"text/xml"时,我会收到一个"HTTP/1.1 400错误请求"错误。

    $.ajax({
        url: 'http://localhost:58291/Service1.svc/GetHTMLTableFromDimensionString',
        type: 'POST',
        contentType: 'text/xml',
        data: dimselection,
        success: function (result) {
            alert(result);
        }
    });

var dimselection是一个下拉列表中的字符串,尽管我尝试在data:block中创建JSON版本{"strDims",dimselection},但没有成功,但错误消息表明这是一个坏请求,这似乎意味着数据的格式仍然错误——字符串和JSON都不起作用
我发现另一篇帖子说WCF是REST和另一个SOAP(它到底是哪一个?我如何轮询WCF web服务以了解它需要什么数据?)我打错电话了吗?数据格式错误?缺少说明符?

你能试试吗

data:'{"strDims":"4,5"}',
contentType:"application/json",
dataType:"json",

此外,请确保将[WebInvoke]装饰器添加到您正在调用的方法中,因为它是POST请求。

 [WebInvoke(Method = "POST",
                 BodyStyle = WebMessageBodyStyle.Wrapped,
                 ResponseFormat = WebMessageFormat.Json,
                 RequestFormat = WebMessageFormat.Json)]

最新更新