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

advertisements

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.


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).