Noel Heesen
Noel Heesen

Reputation: 243

Angular $http - function/response undefined

I've been unable to retrieve data from a json or php file because angular keeps yelling at me that either the function or response is undefined.

I want to pull up the navigation items from MySQL, when it failed to load php I've put the contents in a regular json file to see what was the problem it seems something in angular itself.

PHP:

<?php

header('Content-type:application/json');

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "dbname";

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = 'SELECT * FROM navigation';
$result = $conn->query($sql);

$emparray = array();
while($row = mysqli_fetch_assoc($result)) {
    $emparray[] = $row;
}

echo json_encode($emparray);

$conn->close();
?>

Which results in:

[{"nav_id":"0","nav_name":"Home","nav_link":""}, {"nav_id":"1","nav_name":"Contact","nav_link":"contact"}]

So far so good?

Here's my angular code that gets the file:

(function() {
var app = angular.module("headerControl", []);

app.directive("headerNavigation", function() {

    return {
        retrict:'E',
        templateUrl:'views/partials/header-navigation.html'
    };

});

app.controller("navController", function($scope, $http) {

    $scope.navlist = {};

    $http.get('phpservices/nav.php')
        .success(function(response) {
            alert('success');
         })
        .error(alert('error'));

});


})();

When I load the page it first gives me the error response and after that the success response... in the console angular tells me this:

Error: [ng:areq] http://errors.angularjs.org/1.4.2/ng/areq?p0=fn&p1=not%20a%20function%2C%20got%20undefined

whats wrong about this? I can't seem to figure it out...

Upvotes: 1

Views: 521

Answers (1)

dfsq
dfsq

Reputation: 193291

The problem is that you are not passing error callback function properly. It should be:

.error(function() {
    alert('error') 
});

Otherwise you just invoke alert immediately (note ()) and since it doesn't return anything (so it "returns" undefined) error handler receives undefined in it. However, it expects a function. That's why you get this error.

Upvotes: 1

Related Questions