2017-04-05 2 views
1

arbeiten Ich habe Setup einen getJSON Anruf, wenn Seite geladen in meiner .NET MVC-app wie folgt aus:jQuery getJSON mit .NET MVC nicht

$(document).ready(function(){ 
    $.getJSON("/Administrator/GetAllUsers", function (res) { 

      // getting internal server error here... 
     }); 

}); 

Und die Aktion wie folgt aussieht:

[HttpGet] 
    [ActionName("GetAllUsers")] 
    public string GetAllUsers() 
    { 
     return new JavaScriptSerializer().Serialize(ctx.zsp_select_allusers().ToList()); 
    } 

Ich erhalte diesen Fehler:

500 (Internal Server Error) 

Was mache ich hier falsch ???

+2

'return Json (ctx.zsp_select_allusers(), JsonRequestBehavior.AllowGet);' –

+1

Entfernen Sie den Schrägstrich/vor Administrator/GetAllUsers und überprüfen Sie. Ihr Rückgabetyp sollte JsonReturn sein –

+1

Und es muss öffentlich sein ActionResult GetAllUsers() 'oder' public JsonResult GetAllUsers() ' –

Antwort

1

Ihren Rückgabetyp in Verfahren ändern und Json zurückgeben, wie unten,

[HttpGet] 
[ActionName("GetAllUsers")] 
public ActionResult GetAllUsers() 
{ 
    var data = ctx.zsp_select_allusers().ToList(); 
    return Json(data, JsonRequestBehavior.AllowGet); 
} 

Wie Sie in Ihrem Kommentar erwähnt haben, Sie sind 500 Fehler noch immer. Ich denke, dieser Controller hat [Authorize] Attribut und Sie rufen diese Methode ohne Anmeldung. In diesem Fall können Sie das Attribut [AllowAnonymous] in GetAllUsers() verwenden, um auf die Methode zuzugreifen.

1

In MVC, json Ergebnis nur zurückgegeben, wenn Sie post Anfrage, um es für einige Sicherheitszwecke machen, solange nicht explizit JsonRequestBehavior.AllowGet angeben, auch Ihren Rückgabetyp

[HttpGet] 
    [ActionName("GetAllUsers")] 
    public JsonResult GetAllUsers() 
    { 
     return Json(ctx.zsp_select_allusers(), JsonRequestBehavior.AllowGet); 
    } 
+0

Interner Server Fehler immer noch ... – User987

+2

Es ist albern, aber versuchen, '[HttpGet]' und '[ActionName (" GetAllUsers ")]' –

+0

Wenn Sie immer noch den Fehler erhalten, bearbeiten Sie Ihre Frage und fügen Sie Code Ihres Controllers. –

1

es

$.getJSON('@Url.Action("GetAllUsers", "Administrator")', function (res) { 

      alert(res); 
     }); 

[HttpGet] 
    public ActionResult GetAllUsers() { 

      //get the data from db , then send it 
      //i'm passing dummy text 'got it' 

     return Json("got it", JsonRequestBehavior.AllowGet); 
    } 
versuchen ändern