s.k.paul
s.k.paul

Reputation: 7301

Return List<T> from controller to ajax in asp.net mvc4

I am trying to get a list from controller upon a jquery ajax call.

But it returns an error 'Unexpected token S'.

UPDATE- Controller code is Ok. It successfully preparing the list. But ajax shows this error.

jquery ajax code-

var urlData = '@Url.Action("GetThanas", "AgentKycEntry")';
$.ajax({
type: "POST",
url: urlData,
contentType: "application/json; charset=utf-8",
data: "{'id':'" + selectedVal + "'}",
dataType: "json",
success: function (result) {
//tasks with restul
},
error: function (request, status, error) {
alert("Request: " + request + " Status: " + status + " Error: " + error);
}
});

Code in controller

    [HttpPost]
    public List<Thana> GetThanas(int id)
    {
        return Thana.GetThanaList(id);
    }

UPDATE- Model code

   public class Thana
{

    public String ThanaId { get; set; }
    public String ThanaName { get; set; }

    public Thana() { }


    public static List<Thana> GetThanaList(Int32 districtId)
    {
        List<Thana> thanaList = new List<Thana>();


        String ConnectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
        using (SqlConnection Connection = new SqlConnection(ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("Select ThanaId,ThanaName From tblThanas where ThanaId<>0 And DistrictId=" + districtId + " or DistrictId=0 order By DisplayOrder ASC, ThanaName ASC ", Connection))
            {
                Connection.Open();
                SqlDataReader Reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                while (Reader.Read())
                {
                    Thana thana = new Thana();
                    thana.ThanaId = Reader["ThanaId"].ToString();
                    thana.ThanaName = Reader["ThanaName"].ToString();
                    thanaList.Add(thana);
                }
                if (!Reader.IsClosed)
                {
                    Reader.Close();
                }
            }
        }



        return thanaList;
    }

}

Any suggestion ?

Upvotes: 2

Views: 2779

Answers (1)

WannaCSharp
WannaCSharp

Reputation: 1898

Return it as Json, try this.

public JsonResult GetThanas(int id)
    {
        var list =  Thana.GetThanaList(id);
        return Json(list, JsonRequestBehavior.AllowGet);
    }

EDIT:

success: function (result) {
//tasks with restul
    alert(result[0].ThanaName);
},

Upvotes: 3

Related Questions