我正在尝试使用Ajax.BeginForm()从我的控制器发布Json结果(我正在使用MVC3)。调用Json结果时,应将其发送到javascript函数并使用提取对象
var myObject = content.get_response().get_object();
但是,在尝试调用Ajax POST时,它只会引发“ Microsoft JScript运行时错误:对象不支持此属性或方法”。
我的代码:
控制器:
[HttpPost] public ActionResult Index(string message) { return Json(new { Success = true, Message = message }); }
视图:
<!DOCTYPE html> <html> <head> <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script> <script type="text/javascript"> function JsonAdd_OnComplete(mycontext) { var myObject = mycontext.get_response().get_object(); alert(mycontext.Message); } </script> </head> <body> <div> @using(Ajax.BeginForm("Index", "Home", new AjaxOptions() { HttpMethod = "POST", OnComplete = "JsonAdd_OnComplete" })) { @Html.TextBox("message") <input type="submit" value="SUBMIT" /> } </div> </body> </html>
奇怪的是,完全相同的代码可以在MVC2中使用-这是一个错误,还是我忘了一些东西?
提前致谢。
ASP.NET MVC 3 RC MS中的AFAIK已被弃用,而所有Ajax.*辅助方法都使用jQuery 。Javascript也变得不那么引人注目。这意味着您不再需要打电话,.get_response().get_object()而只需:
Ajax.*
.get_response().get_object()
function JsonAdd_OnComplete(myObject) { // here myObject is already the JSON object // as returned by the controller action alert(myObject.Message); }