我建议您JSONP,它是唯一真正的跨浏览器和跨域AJAX的可靠解决方案。因此,您可以从编写自定义操作结果开始,该结果将用回调包装JSON响应:
public class JsonpResult : ActionResult{ private readonly object _obj; public JsonpResult(object obj) { _obj = obj; } public override void ExecuteResult(ControllerContext context) { var serializer = new JavascriptSerializer(); var callbackname = context.HttpContext.Request["callback"]; var jsonp = string.Format("{0}({1})", callbackname, serializer.Serialize(_obj)); var response = context.HttpContext.Response; response.ContentType = "application/json"; response.Write(jsonp); }}然后:
public ActionResult AddPerson(Person person){ return new JsonpResult(true);}最后执行跨域AJAX调用:
$.ajax({ url: 'http://somedomain.com/Ajax/AddPerson', jsonp: 'callback', dataType: 'jsonp', data: { firstName: 'john', lastName: 'smith' }, success: function (result) { alert(result); }});


