Chan Yoong Hon
Chan Yoong Hon

Reputation: 1812

Angularjs $http post request data and response with undefined error

I want to get specific value from server side. Therefore I am using $http to pass variable from front-end (Angularjs javascript) to backend(php). After server side (php) get the value from front-end. It will run sql query to get data from mysql and return the data to front-end. However, in my console of front-end, it shows undefined error. The following is my code:

Front-end Javascript

$http({
    method: "post",
    url: "http://localhost/php/UpdateLastLogin.php",
    data: {
        user_name: user_name,
        CurrentTimestamp: CurrentTimestamp
        },
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).success(function(response) {
    console.log(response);
}).error(function(response) {
    console.log(response);
});

Backend PHP

<?php
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Credentials: true");
    header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
    header('P3P: CP="CAO PSA OUR"'); 
    header("Content-Type: application/json; charset=utf-8");


    $postdata = file_get_contents("php://input");
    $request = json_decode($postdata);
    @$CurrentTimestamp = $request->CurrentTimestamp;
    @$user_name = $request->user_name;

    $servername = "localhost";
    $username = "jack";
    $password = "1234";
    $dbname = "daikinchat";

    $CurrentTimestamp = '"' . $CurrentTimestamp . '"';
    //$user_name = '"' . $user_name . '"';
    $user_name = "Lisa Wong";

    $conn = new mysqli($servername, $username, $password, $dbname);
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

    $query = "SELECT last_login_timestamp FROM user_directory WHERE username = '$user_name'";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_row($result);

    echo $row[0];

?>

Upvotes: 1

Views: 7321

Answers (1)

Alberto Martinez
Alberto Martinez

Reputation: 36

The problem may be in your $http call, my $http calls look like:

$http({
            method: 'post',
            url:'http://localhost/php/UpdateLastLogin.php',
            data: {...},
            config: 'Content-Type: application/json;'
        }).then(function (response) {
            console.log(response);
        }, function (response) {
            console.log(response);
        });

If I'm not wrong, you can use both, headers or config, but seems like you aren't using properly the attribute headers, the documentation says:

  • headers – {function([headerName])} – Header getter function.
  • config – {Object} – The configuration object that was used to generate the request.

So try to change your 'Content-Type' to 'application/json', because that's what you are sending in you http request body. If it doesn't work, change headers to config to test.

If it doesn't work either, I'd use any tool like, 'postman' to check the API, and make sure that it's working, and try to debug the PHP code (I can't help you with this part)

Upvotes: 2

Related Questions