现在我正在学习MVC的Ajax实现,但我无法正常工作。这就是我所拥有的:
@Ajax.ActionLink("Click here to get a title", "Yo",
new AjaxOptions { OnSuccess = "alert(\"YES!\")", OnFailure = "alert(\"WHY?!\")" })
以下是两种控制器方法:
public PartialViewResult GetThatTitle()
{
var titular = new TitleDataEntity { };
titular.TitleName = "Inception!";
titular.PublishDate = DateTime.Now;
titular.Id = 2;
return PartialView("_testView", titular);
}
public JsonResult Yo()
{
var titular = new TitleDataEntity { };
titular.TitleName = "Inception!";
titular.PublishDate = DateTime.Now;
titular.Id = 2;
if(Request.IsAjaxRequest())
{
return Json(titular);
}
return Json(titular);
}
当我调用“Yo”函数时,浏览器会给我“为什么?!”警报框。但是当我调用GetThatTitle时,它会给我成功警报。当我尝试返回Json结果时为什么会失败?
答案 0 :(得分:0)
在返回默认禁用的JSON时,您需要允许这样的GET请求:
return Json(titular, JsonRequestBehavior.AllowGet);
我强烈建议您使用FireBug。它在其控制台中显示所有AJAX请求,您可以看到请求和响应。如果您已经使用过它,您会看到以下内容:
InvalidOperationException:这个 请求已被阻止,因为 敏感信息可能是 向第三方网站披露 当在GET请求中使用它时。至 允许GET请求,设置 JsonRequestBehavior to AllowGet。]
当然会让你走上正确的轨道。