2009-09-23 4 views
6

Я изучаю asp.net mvc, работая над тестовым проектом, включая SubSonic и jQuery.getJSON Callback Not Firing

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я хочу вернуть что-то большее, чем простая строка, например объект 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

ответ

0

JQuery имеет error handler, что вы должны связать, если вы хотите увидеть ошибки:

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

вы пробовали:

$ .getJSON (URL, функция (данные, статус) {Alert («Успех!»);});

, а также проверьте URL в правильном разрешении, выполнив:

предупреждение (URL);

перед тем, как позвонить, чтобы проверить его правильность.

Затем проверьте ответ в окне консоли Firebug в Firefox.

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