2016-10-10 2 views
1

Я хочу получить конкретное значение со стороны сервера. Поэтому я использую $ http для передачи переменной из front-end (Angularjs javascript) в backend (php). После того, как серверная сторона (php) получит значение от front-end. Он будет запускать sql-запрос для получения данных из mysql и возврата данных в интерфейс. Однако в моей консоли 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]; 

?> 
+0

какая линия показывает? – Sajeetharan

+0

Ошибка @Sajeetharan (функция (ответ) { console.log (response);} –

+0

попробуйте тип контента 'application/json' в вашем запросе $ http –

ответ

2

Проблема может быть в вашей $ 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); 
     }); 

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

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

Так что попробуйте изменить свой «Content-Type» на «application/json», потому что это то, что вы отправляете в ваше тело запроса HTTP. Если он не работает, измените заголовки на конфигурацию, чтобы проверить.

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

+0

Я думаю, что основная проблема заключается в том, что я отправляю объект на бэкэнд, но в своем php-эхом это строка вместо объекта.Поэтому он выдается с SyntaxError: Неожиданный токен a в JSON в позиции 0. Может ли мой ответ принять String? –

+0

Вы можете использовать JSON.stringfy (json_object), чтобы получить строку, а JSON.parse (string_object), чтобы снова получить json из этой строки. Итак, убедитесь, что у вас есть объект, выделенный для json или string, перед его использованием ... –

+0

II просто замечает, модифицирует ваш $ http-вызов, используйте этот: ' $ http ({ метод: "post", URL: "http: // localhost/php/UpdateLastLogin. PHP», данные: { имя_пользователя: имя_пользователя, CurrentTimestamp: CurrentTimestamp }, заголовки: { 'Content-Type': 'приложения/JSON'}} .then (функция (ответ) { console.log (ответ); }, функция (отклик) { console.log (отклик); }); ' –

 Смежные вопросы

  • Нет связанных вопросов^_^