Mohsin
Mohsin

Reputation: 902

TypeError: Cannot read property 'protocol' of undefined Angular JS

i am facing an error while getting a list of services based on previous id of dropdown

ERROR: TypeError: Cannot read property 'protocol' of undefined

here is my HTML

<table>
 <tr>
 <td>Team Member</td>
 <td>                  
 <select name="teamember" class="form-control" ng-model="members" ng-options="c.Name for c in member" ng-change="loadservices(members)"></select>
 </td>
 </tr>
 <tr>
 <td>Service</td>
 <td>
 <select name="service" class="form-control" ng-model="servicesforemp" ng-options="c.Name for c in sfe"></select></td>
 </tr>
 </table>

here is my Angular Controller

var app = angular.module('appointment', ['ngRoute']);
    function getMembers($scope, $http) {
        $scope.member = [];
        $scope.servicesforemp = [];
        $http.get('/api/servicesapi/GetEmpByBusiness')
            .then(
                function(response) {
                    $scope.member = response.data;
                    $scope.membrs = $scope.member[0];
                },
                function() {
                    
                }
            );

        $scope.loadservices = function (members) {
            var id = members.Id;
            console.log(id);//shows correct id
        //error :function exits here
            $http.get('/api/servicesapi/GetServicesByEmployees', id)
                .then(
                    function(result) {
                        $scope.servicesforemp = result.data;
                        $scope.sfe = $scope.servicesforemp[0];
                    },
                    function() {
                        alert('Error in loading services');
                    }
                );
        };
    }

Upvotes: 2

Views: 7497

Answers (1)

Skylar Saveland
Skylar Saveland

Reputation: 11464

This can happen in a number of ways with improper use of $http. In my case, I was sending in an undefined url.

$http({
  method: "GET",
  url: obj.thisIsUndefined
}).success ....

In your case @doodec is right:

$http.get('/api/servicesapi/GetServicesByEmployees', options)

Second argument to get should be a config object https://docs.angularjs.org/api/ng/service/$http#get

Upvotes: 1

Related Questions