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

时间:2013-12-13 19:41:54

标签: jquery json wcf

这是一个带有jQuery / AJAX问题的新手。 基本上,我想将一个简单的字符串(例如“4,5”)发布到WCF Web服务,该服务接收字符串并创建表,然后将表发送回浏览器。 我已经创建并测试了WCF Web服务,并使用内置的VS2012客户端进行了调用。没有问题 - 字符串输入,表格输出 - 完美无缺。

在客户端(在这种情况下是带有jQuery的HTML页面),我不是很幸运。 按照教程中POST的示例,我发现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 Bad Request”错误。

    $.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服务以找出它需要什么数据?) 我打电话给服务错了吗?格式化数据错误?说明失踪?

1 个答案:

答案 0 :(得分:0)

你能试试吗

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

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

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