2009-09-23 8 views
6

Uczę się asp.net mvc, pracując nad projektem testowym, w tym SubSonic i jQuery.Wywołanie funkcji getJSON Not Fireing

Problem, który napotykam, polega na tym, że za każdym razem, gdy chcę zwrócić coś więcej niż zwykły ciąg znaków, jak obiekt Json, mam problem, ponieważ wywołania zwrotne nie wydają się wystrzelać lub wracają jako nieudane.

Moja metoda, aby uzyskać listę ofert pracy w bazie danych:

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

     return Json(jobs.ToList()); 
    } 

A moja JavaScript, żeby nazwać go:

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

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

Grałem około z GET, POST i getJSON przy użyciu zarówno definicje funkcji inline i outside dla sukcesu i niepowodzenia. Nic nie działa, ale kod zdecydowanie wywołuje Ajax, po prostu nie uruchamiając wywołania zwrotnego.

+0

Jest to krzyż domeny getJSON (tj JSONP) lub same domeny? – seth

Odpowiedz

0

jQuery ma error handler że trzeba wiązać, jeśli chcesz zobaczyć błędy:

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

próbowałeś:

$ .getJSON (URL, funkcja (dane, status) {alert ("Powodzenie!"); });

a także sprawdzić, czy adres URL jest prawidłowo rozwiązać wykonując:

alert (URL);

przed połączeniem, aby sprawdzić, czy jest prawidłowe.

Następnie sprawdź odpowiedź w oknie konsoli Firebug w przeglądarce Firefox.

0

Problem leży gdzieś w tym, co wracam. Wydaje się, że popychanie typów anonimowych do Json() wydaje się jakoś zepsuć. Definiując prostą klasę i przesuwając wartości do nowej instancji, poprawiłem ją.

12

Oto rozwiązanie !!

Tak więc okazuje się, że robił się dokładnie w ten sam sposób przez ponad rok:

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

    return Json(result); 
} 

Więc zacząłem robić to w ten sam sposób o nowym projekcie zacząłem się. Cóż, różnica? Pierwszym z nich był MVC 1.0, a mój nowy to MVC 2.0. Jaka jest różnica? Trzeba pozwolić żądania JSON otrzymujemy:

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

    return Json(result, JsonRequestBehavior.AllowGet); 
}