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