来自简单的$ .getJSON调用的HTTP状态代码500 - 为什么?

时间:2010-10-18 09:01:20

标签: jquery asp.net-mvc ajax httpresponse

我已经剥离了getJSON对最简单的例子的调用,可能试图弄清楚为什么它不起作用但是我没有想法。我目前有:

public JsonResult MyAction()
{
    return Json(new { status = "OK" });
}

$.getJSON('MyController/MyAction', function(result) { alert('worked'); });

此操作已被调用,但警报未被触发,并且在Chrome开发人员工具中查看我发现状态500错误代码已返回。什么可能导致这个?我该如何调试呢?

3 个答案:

答案 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错误。