Данные запроса отправки Angularjs $http и ответ с неопределенной ошибкой

Я хочу получить конкретное значение со стороны сервера. Поэтому я использую $http для передачи переменной из интерфейса (javascript Angularjs) в серверную часть (php). После серверной части (php) получите значение из внешнего интерфейса. Он запустит sql-запрос, чтобы получить данные из mysql и вернуть данные во внешний интерфейс. Однако в моей консоли внешнего интерфейса отображается неопределенная ошибка. Ниже приведен мой код:

Внешний 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);
});

Бэкенд 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];

?>

person Chan Yoong Hon    schedule 10.10.2016    source источник
comment
какая строка показывает?   -  person Sajeetharan    schedule 10.10.2016
comment
Ошибка @Sajeetharan (функция (ответ) { console.log (ответ);}   -  person Chan Yoong Hon    schedule 10.10.2016
comment
попробуйте тип контента application/json в вашем запросе $http   -  person Divyesh Savaliya    schedule 10.10.2016


Ответы (1)


Проблема может быть в вашем вызове $http, мои вызовы $http выглядят так:

$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);
        });

Если я не ошибаюсь, вы можете использовать как заголовки, так и конфигурацию, но, похоже, вы неправильно используете заголовки атрибутов, в документации говорится:

  • заголовки – {function([headerName])} – функция получения заголовков.
  • config — {Object} — объект конфигурации, который использовался для создания запроса.

Поэтому попробуйте изменить свой «Content-Type» на «application/json», потому что это то, что вы отправляете в своем теле запроса http. Если это не работает, измените заголовки на config для проверки.

Если это тоже не сработает, я бы использовал любой инструмент, например «почтальон», чтобы проверить API и убедиться, что он работает, и попытаться отладить код PHP (я не могу помочь вам с этой частью)

person Alberto Martinez    schedule 10.10.2016
comment
Я думаю, что основная проблема заключается в том, что я отправляю объект в бэкэнд, но в моем php echo это строка вместо объекта. Поэтому выдается сообщение SyntaxError: Неожиданный токен a в JSON в позиции 0. Может ли мой ответ принять строку? - person Chan Yoong Hon; 10.10.2016
comment
Вы можете использовать JSON.stringfy(json_object) для получения строки и JSON.parse(string_object) для повторного получения json из этой строки. Поэтому убедитесь, что у вас есть объект, переданный в json или строку, прежде чем использовать его... - person Alberto Martinez; 10.10.2016
comment
Я только заметил, измените вызов $http, используйте этот: ` $http({ method: post, url: localhost /php/UpdateLastLogin.php, данные: {user_name: user_name, CurrentTimestamp: CurrentTimestamp}, заголовки: { 'Content-Type': 'application/json' } }.then(function (response) { console.log (ответ); }, функция (ответ) { console.log(ответ); }); ` - person Alberto Martinez; 10.10.2016