Jquery Rest communication with WCF 3.5

2019-04-09 13:45发布

I'm testing the basics for exchanging rest messages between a asp.net mvc site and a WCF 3.5 service. The service is built using the template found in the WCF REST Starter Kit found on codeplex. I would like to exchange json messages using jquery. The REST Singleton service is working properly and it also provide examples of all the possible calling adding the help parameter ad the end of the uri. I arrive to perform GET requests with the built in jquery $.getJSON. I have problems doing the PUT (for updating values) and POST.

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

What is the best approach for this? Is it possible not to use Ms. Ajax at all and is it correct to bypass it?

3条回答
Deceive 欺骗
2楼-- · 2019-04-09 14:00

Also make sure you have your contentType set correctly in your ajax call.

contentType: "application/json"

The JQuery default is

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

查看更多
闹够了就滚
3楼-- · 2019-04-09 14:10

"PUT" and "DELETE" are not supported by all browsers according to jQuery

The type of request to make ("POST" or "GET"), default is "GET". Note: Other HTTP request methods, such as PUT and DELETE, can also be used here, but they are not supported by all browsers.

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

I didn't really understand your question though. Are you having a problem doing a PUT and a POST or just a POST? Does the GET work fine?

One error that I noticed was your data, notice I added it without quotes.

$.ajax({
     type: "PUT",
     dataType: "json",
     url: "http://localhost:1045/Service.svc/?format=json",
     data: { Value: "testvalue" }
});
查看更多
爷的心禁止访问
4楼-- · 2019-04-09 14:22

The PUT and DELETE verbs are not enabled on all servers. You need to place these verbs in a X-HTTP-Method-Override header. The valeu is taken from the header and substituted for a normal POST jsut before the request is processed.

The jQuery jREST Plugin can help you with this. If you are using WCF, you will also need to implement a RequestInterceptor (search for XHttpMethodOverrideInterceptor for mroe details).

查看更多
登录 后发表回答