getJSON回调未触发

时间:2009-09-23 22:06:50

标签: jquery asp.net-mvc json

我正在通过研究包括SubSonic和jQuery在内的测试项目来学习asp.net mvc。

我遇到的问题是每次我想要返回的东西多于一个简单的字符串,比如一个Json对象,我会受到阻碍,因为回调似乎没有触发,或者返回失败。

获取数据库中作业列表的方法:

    [AcceptVerbs(HttpVerbs.Get)]
    public JsonResult GetAllJobs()
    {
        var db = new JamesTestDB();
        var jobs = from job in db.Jobs
                   select job;

        return Json(jobs.ToList());
    }

我的JavaScript称之为:

    function updateJobList() {
        var url = '<%= Url.Action("GetAllJobs", "Home") %>';

        $.getJSON(url, null, function(data, status) { alert("Success!"); });
    }

我使用内联和外部函数定义来成功和失败,使用get,post和getJSON。似乎没有什么工作,但代码肯定是在进行Ajax调用,而不是触发回调。

4 个答案:

答案 0 :(得分:12)

以下是解决方案!!

事实证明,我一年多来一直在做同样的事情:

public JsonResult SaveData(string userID, string content)
{
    var result = new { Message = "Success!!" };

    return Json(result);
}

所以,我开始以同样的方式在我启动的新项目上这样做。嗯,区别?第一个是MVC 1.0,我的新版本是MVC 2.0。那有什么区别?您必须允许JSON GET请求:

public JsonResult SaveData(string userID, string content)
{
    var result = new { Message = "Success!!" };

    return Json(result, JsonRequestBehavior.AllowGet);
}

答案 1 :(得分:0)

如果你想看到错误,jQuery有一个error handler你必须绑定:

$("#msg").ajaxError(function(event, request, settings){
   $(this).append("<li>Error requesting page " + settings.url + "</li>");
 });

答案 2 :(得分:0)

你试过了吗?

$。getJSON(url,function(data,status){alert(“Success!”);});

并且通过执行以下操作检查URL是否正确解析:

警报(URL);

在通话之前检查它是否正确。

然后检查Firefox中Firebug控制台窗口的响应。

答案 3 :(得分:0)

问题出在我正在回归的地方。似乎将匿名类型推入Json()似乎会导致它以某种方式陷入困境。通过定义一个简单的类并将值推送到它的新实例中,我让它正确返回。