AJAX requests are performed in the page using normal HTTP request/response. That is, in javascript the client will create a AJAX request object, send it off to a URL and it gets back a string. If that string is json, it can be eval'd and become a live javascript object.
The philosophy of MVC is that all http requests go through controllers. WCF is only for other types of web services that where the client doesn't consume html-json-css-etc.
You can return JSON from a controller action using the Json(object model) method on System.Web.Mvc.Controller.
for example
ActionResult MyAction() {
return Json(new { success=false, for_lunch="mmm, chicken"});
}
That will return the json your webpage can consume.
So, that leaves the question - how does the browser call the MyAction for the json?
Several posts exist on this topic, and the first one i could find that did this was this post.
Hope that helps