我已经剥离了getJSON
对最简单的例子的调用,可能试图弄清楚为什么它不起作用但是我没有想法。我目前有:
public JsonResult MyAction()
{
return Json(new { status = "OK" });
}
$.getJSON('MyController/MyAction', function(result) { alert('worked'); });
此操作已被调用,但警报未被触发,并且在Chrome开发人员工具中查看我发现状态500错误代码已返回。什么可能导致这个?我该如何调试呢?
答案 0 :(得分:8)
默认情况下,MVC 2.0会阻止对返回JsonResult
的操作的GET请求。
使用JsonRequestBehavior.AllowGet
强制解决问题,或使用POST。
public JsonResult MyAction()
{
return Json(new { status = "OK" }, JsonRequestBehavior.AllowGet);
}
或使用帖子:
$.post('MyController/MyAction', function(result) {
alert('worked');
});
答案 1 :(得分:0)
请在网络标签中使用firebug(或fiddler),选择XHR,查看您发送和接收的内容。
正如Michael Shimmins所说,由于Json Hijacking,MVC 2默认阻止Get请求。 这是一篇有趣的文章:
http://www.ifunky.net/blog/post/AspNet-MVC-2-JsonRequestBehaviorAllowGet.aspx
他们在这里谈到这个消息: “此请求已被阻止,因为在GET请求中使用此信息时,可能会向第三方网站披露敏感信息。”
答案 2 :(得分:0)
我认为MyController / MyAction与你现在的任何url相关。试试'MyController / MyAction'。
编辑:还尝试从您当前的任何网址调用MyController / MyAction并检查它是否返回所需的结果
编辑:其实不是问题。正如迈克尔指出的那样,这将返回404错误。