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 的通信?
JSON 中基于 WCF REST 的响应的 JQUERY AJAX