neela
neela

Reputation: 77

AngularJs passing parameters to a service

I want to input Id via post method and get data for that Id back from database. I'm currently getting an error "employeeID is not defined" in my controller code.

Controller code:

$scope.employeeID = '10';


function test() {
    var getData = myService.getEmployee(employeeID);
    getData.then(function (emp) {
        $scope.employees2 = emp.data;

    }, function () {
        alert('Error in getting records');
    });
}

test(employeeID);

Service code:

this.getEmployee = function (employeeID) {
    var response = $http({
        method: "post",
        url: "Home/getEmployeeByNo",
        params: {
            id: JSON.stringify(employeeID)
        }
    });
    return response;
}

HomeController code:

    public JsonResult getEmployeeByNo(string EmpNo)
    {
        using (InsiteEntities dataContext = new InsiteEntities())
        {
            int no = Convert.ToInt32(EmpNo);
            var employeeList = dataContext.Employee.Find(no);
            return Json(employeeList, JsonRequestBehavior.AllowGet);
        }
    }

Upvotes: 1

Views: 44

Answers (2)

Pankaj Parkar
Pankaj Parkar

Reputation: 136144

You should pass EmpNo parameter inspite of id parameter in params object, so that the URL will form like Home/getEmployeeByNo?EmpNo=123

this.getEmployee = function (employeeID) {
    var response = $http({
        method: "post",
        url: "Home/getEmployeeByNo",
        params: {
            EmpNo: employeeID //changed to `EmpNo`
        }
    });
    return response;
}

Also pass employeeID from $scope as describe in Sajeeth's answer like myService.getEmployee($scope.employeeID);

Upvotes: 1

Sajeetharan
Sajeetharan

Reputation: 222582

Change

From

 var getData = myService.getEmployee(employeeID);

To

 var getData = myService.getEmployee($scope.employeeID);

Upvotes: 1

Related Questions