Jquery Rest 与 WCF 3.5 的通信

Posted

技术标签:

【中文标题】Jquery Rest 与 WCF 3.5 的通信【英文标题】:Jquery Rest communication with WCF 3.5 【发布时间】:2010-09-23 23:04:52 【问题描述】:

我正在测试在 asp.net mvc 站点和 WCF 3.5 服务之间交换休息消息的基础知识。 该服务是使用 codeplex 上的 WCF REST Starter Kit 中的模板构建的。 我想使用 jquery 交换 json 消息。 REST Singleton 服务工作正常,它还提供了所有可能调用的示例,将帮助参数添加到 uri 的末尾。 我到达后使用内置的 jquery $.getJSON 执行 GET 请求。 我在执行 PUT(用于更新值)和 POST 时遇到问题。

$.ajax(
     type: "PUT",
     dataType: "json",
     url: "http://localhost:1045/Service.svc/?format=json",
     data: '"Value":testvalue'
 ); 

对此最好的方法是什么?有没有可能根本不使用Ajax女士,绕过它是否正确?

【问题讨论】:

【参考方案1】:

还要确保在 ajax 调用中正确设置了 contentType

contentType: "application/json"

JQuery 默认是

contentType: "application/x-www-form-urlencoded"

【讨论】:

【参考方案2】:

根据jQuery,并非所有浏览器都支持“PUT”和“DELETE”

要发出的请求类型(“POST”或 “GET”),默认为“GET”。注:其他 HTTP 请求方法,例如 PUT 和 DELETE,这里也可以用,但是 并非所有人都支持 浏览器。

http://docs.jquery.com/Ajax/jQuery.ajax#options

虽然我并没有真正理解你的问题。您在执行 PUT 和 POST 或只是 POST 时遇到问题? GET 工作正常吗?

我注意到的一个错误是您的数据,请注意我添加的数据没有引号。

$.ajax(
     type: "PUT",
     dataType: "json",
     url: "http://localhost:1045/Service.svc/?format=json",
     data:  Value: "testvalue" 
);

【讨论】:

嗨,尼克,感谢您更正示例。为了澄清我的 POST 和 PUT 也使用正确的代码,这两种方法都返回 ParseError...【参考方案3】:

并非所有服务器都启用 PUT 和 DELETE 动词。您需要将这些动词放在 X-HTTP-Method-Override 标头中。 valeu 取自标头,并在处理请求之前替换正常的 POST jsut。

jQuery jREST 插件可以帮助您解决这个问题。如果您使用的是 WCF,您还需要实现一个 RequestInterceptor(搜索 XHttpMethodOverrideInterceptor 以获取 mroe 详细信息)。

【讨论】:

以上是关于Jquery Rest 与 WCF 3.5 的通信的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?

使用 WCF Rest 服务通信 Android 应用程序

JSON 中基于 WCF REST 的响应的 JQUERY AJAX

无扩展 REST WCF 服务为 PUT 方法返回 http 405

Jquery 无法从 WCF REST 服务获得响应

使用 jquery 查询 wcf rest 服务(不允许 405 方法)