Jquery Rest与WCF 3.5的通信

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

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

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

根据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" } }); 

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

contentType: "application/json"

JQuery默认是

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

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

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