inoabrian
inoabrian

Reputation: 3800

Angular JS $http.get does not receive data from PHP script

I am using angular's $http.get function to call a PHP script file to retrieve data

var $promise = $http.get("../php-bin/example.php",obj).success(function(data) {

              console.log(data);
            });

The php is supposed to just get data from a mysql db to figure out a way to get data into my app

$user = json_decode(file_get_contents('php://input'));
$email = $user->email;
$pass = $user->pass;

$con = //a mysql_connection;
// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
}

$validateEmail = "SELECT `Email` FROM `newUsers` WHERE `Email` = '$email' ";

if ($result = mysqli_query($con,$validateEmail)) {
     if ($result->num_rows == 1){
        $date = '2014-08-13'; 
        //$sql = "INSERT INTO newUsers (Email, CreationDate, UserRef, Type, id) VALUES ('$email','$date','$email','Host','$ssid')";
        $sql = "SELECT `email` FROM `newUsers` WHERE `hashpass` = '$pass' ";

        $result = mysqli_query($con,$sql);

        $row = mysqli_fetch_assoc($result);

        return $row;
        //I never receive this data in the angular app.
    } 
}
mysqli_close($con);
?>

Could some one point me to the correct way to do this.

Upvotes: 1

Views: 5296

Answers (3)

nmallare
nmallare

Reputation: 97

You cannot call relative paths like that. The file has to exist at the public directory or lower. For instance, if all of your files are in /home/yourname/public, you'd need to call /php-bin/example.php instead, where php-bin is inside of the public directory (/home/yourname/public/php-bin).

Upvotes: 1

Abiodun
Abiodun

Reputation: 467

in your php make sure you echo your result the echoed results get passed into your variable

for example if you are passing in a varibale say from your scope

function($scope,$http){

$scope.obj= "your variable";

$reuslt = http.get('yourlocation/yourfile.php?val='+obj');

your php script

<?
$value = $_GET['val']


//not your variables have been passed in and you can use it to do your custom function wich ever way you like
and echo your result after wards
?>

hope this helps

Upvotes: 4

Luis Masuelli
Luis Masuelli

Reputation: 12343

I see you have a return statement instead of an echo statement. A return statement is not printed in the PHP output. A return statement outside a function has only sense when you include the file:

$returned = include('the_file_you_showed_here.php');
//you will hold the row here

A return statement kills the current script returning to an includer script (if any), but does not send any value to the output (that's the purpose of die/exit). You should:

  1. Change the return to echo.
  2. Remember to have a header('Content-type: application/json') sent if you intend to send json data, before any actual echo instruction or non-php content.
  3. Remember to encode the data: return json_encode($row).

Upvotes: 4

Related Questions