2009-09-23 78 views
6

我正在学习一个测试项目,包括SubSonic和jQuery,学习asp.net mvc。getJSON回调不触发

我遇到的问题是,每次我想返回的东西不仅仅是一个简单的字符串,就像一个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调用,而不是触发回调。

+0

这是一个跨域getJSON(即JSONP)还是同一个域? – seth 2009-09-23 22:35:14

回答

0

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

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

你试过:

$ .getJSON(URL,功能(数据,状态){警报( “Success!”);});

而且,查询的网址是做正确解析:

警报(URL);

在呼叫之前检查它是否正确。

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

0

问题在于我回来的地方。似乎将匿名类型推入Json()似乎导致它以某种方式混乱。通过定义一个简单的类并将值推入到它的新实例中,我可以正确地返回它。

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); 
}