0

I use $http request to call MVC controller and return data in JSON format. But i not able to get the result in javascript/angualr js. It return entire HTML page. Where i made the mistake?

myapp.controller('MyCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.toggle = function () {
    $http({
        url: "/Admin/FilterMember",
        method: "GET",
        params: { id: $('#txtsearch').val() }
    }).then(function (result) {
        alert(result);
    });
};
}]);

Above is angular script in JS file.

public ActionResult FilterMember(string id)
{
    SqlParameter[] SqlParam = { new SqlParameter("@Filter", id) };
    DataTable dTable = MasterMindDB.dTableSP(DbConn, "SP_Get_MemberList", SqlParam);
    List<Member> member = new List<Member>();

    foreach (DataRow row in dTable.Rows)
    {
        member.Add(new Member
        {
            MemberName = row["Member ID"].ToString(),
            Email = row["Email"].ToString(),
            JoinDate = row["Join Date"].ToString(),
            Status = row["Status"].ToString()
        });
    }
    return View("Member", Json(member, JsonRequestBehavior.AllowGet));
}

Above is MVC controller

1
  • 1
    Just return Json(member, JsonRequestBehavior.AllowGet) Commented Sep 2, 2016 at 2:47

1 Answer 1

1

This action is for the FilerMember view

[HttpGet]
public ActionResult FilterMember () {
    return View();
}

This action will be called from the client side view. No need to return a ViewResult, just the data

[HttpGet]
public ActionResult GetMemberById(string id) {
    SqlParameter[] SqlParam = { new SqlParameter("@Filter", id) };
    DataTable dTable = MasterMindDB.dTableSP(DbConn, "SP_Get_MemberList", SqlParam);
    List<Member> member = new List<Member>();

    foreach (DataRow row in dTable.Rows) {
        member.Add(new Member {
            MemberName = row["Member ID"].ToString(),
            Email = row["Email"].ToString(),
            JoinDate = row["Join Date"].ToString(),
            Status = row["Status"].ToString()
        });
    }
    //Just return JsonResult.
    return Json(member, JsonRequestBehavior.AllowGet);
}

Updated client

myapp.controller('MyCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.toggle = function () {
    $http({
        url: "/Admin/GetMemberById",
        method: "GET",
        params: { id: $('#txtsearch').val() }
    }).then(function (result) {
        alert(result);
    });
};
}]);
Sign up to request clarification or add additional context in comments.

2 Comments

I want return the View because i using Single page application concept. If remove the View, then my view wont render. Do you have any solution. Thx
ok then move the filter call to another action that is responsible for only returning the data.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.