$ .getJSON没有返回MVC3的响应

时间:2011-05-08 13:23:59

标签: jquery asp.net-mvc ajax

我花了很长时间研究这个问题并且看不出有什么问题。我有以下内容:

$.getJSON(
                '/adminStatus/GetJsonData',
                { name: $('#textSearch')[0].value },
                function (data) {
                    alert("3");
//                  $('#studentList > div').remove();
//                  for (s in data) {
//                      alert("4");
//                      var student = data[s];
//                      $('#studentList').append('<div>(' + student.StudentId + ') ' + student.FirstName + ' ' + student.LastName + '</div>');
//                  }
                }
            );

此代码在我的控制器中触发一个动作,该动作返回数据。它实际上是来自另一个例子的代码:

public JsonResult GetJsonData(string name)
        {
            return new JsonResult
            {
                Data = (from student in Student.GetStudentDataList()
                        where student.LastName.StartsWith(name)
                        select student).ToArray<Student>()
            };
        }

我检查并且Data填充了数据。

然而,返回数据没有发生任何事情,当我添加评论时,我甚至无法显示警报(“3”)。

我做的事情显然是错的吗?我想我正在复制一个工作示例,但似乎没有返回任何内容,并且函数(数据){}似乎没有执行。

非常感谢任何帮助。

谢谢,

2 个答案:

答案 0 :(得分:11)

最好在Firebug之类的内容中查看,以查看是否发生任何错误。试图在不知道究竟发生了什么的情况下进行故障排除只会导致更多的挫败感。

我认为存在潜在问题的一件事是您没有设置JsonRequestBehavior.AllowGet,因此您可能会收到服务器错误。要查看是否属于这种情况,您可以将回报更改为:

var data = (from student in Student.GetStudentDataList()
           where student.LastName.StartsWith(name)
           select student).ToArray<Student>();

return Json(data, JsonRequestBehavior.AllowGet);

答案 1 :(得分:1)

调试此类问题时,fiddler是最好的工具,因为它始终会向您显示内容。