Ronnie
Ronnie

Reputation: 5043

Jquery Rest communication with WCF 3.5

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?

Upvotes: 4

Views: 2973

Answers (3)

James Westgate
James Westgate

Reputation:

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).

Upvotes: 0

MotoWilliams
MotoWilliams

Reputation: 1568

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"

Upvotes: 5

Nick Berardi
Nick Berardi

Reputation: 54894

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

Upvotes: 4

Related Questions