PHP возвращает ответ html после обработки запроса POST от angularjs - PullRequest
0 голосов
/ 28 июня 2018

У меня есть пост-запрос angularjs как:

var loginApp = angular.module("loginApp",[]);
loginApp.controller('loginController', function 
loginController($scope,$http,$window) {

    $scope.submitHandle = function() {
        var req = {
            url: '../login.php',
            method: 'POST',
            data: {
                username: $scope.Username,
                password: $scope.Userpassword,
            }

        };
        $http(req).then(function success(response) {
            var data = response.data;
            if(data.returnCode ==200) {
            alert("Welcome : "+ data.username);
                $window.location = '../webapp/html/user.html';
            }
            else {
                alert("User does not exist");
            }
    }, function(response) {
        alert("Error on server side");
    });
    }
});

Этот запрос передается в login.php, который выглядит следующим образом:

<?php
$servername = "localhost";
$username1 = "root"; 
$password1 = "abcd";

try {
    $conn = new PDO("mysql:host=$servername;dbname=ITC_MANAGEMENT", $username1, $password1);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$postdata=file_get_contents("php://input");
$request=json_decode($postdata,true);
$username=$request->username;
$password=$request->password;
$stmt = $conn->prepare("SELECT UserId, Password from USER_INFO WHERE UserID='".$username."' && Password='".$password."'");
$stmt->execute();
$row = $stmt->rowCount();
if ($row > 0){
$json_array=array();
   $json_array['returnCode']=200;
     $json_array['username']="user1";

          echo  json_encode($json_array);

} else{
   $json_array=array("returnCode"=>201,"username"=>"user1");

  echo json_encode($json_array);
}
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
?>

Теперь, когда я проверяю response.data, он выглядит следующим образом:

"<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Trying to get property of non-object in C:\wamp64\www\itc\login.php on line <i>11</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0006</td><td bgcolor='#eeeeec' align='right'>247504</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp64\www\itc\login.php' bgcolor='#eeeeec'>...\login.php<b>:</b>0</td></tr>
</table></font>
<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Trying to get property of non-object in C:\wamp64\www\itc\login.php on line <i>12</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0006</td><td bgcolor='#eeeeec' align='right'>247504</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp64\www\itc\login.php' bgcolor='#eeeeec'>...\login.php<b>:</b>0</td></tr>
</table></font>
{"returnCode":200,"username":"user1"}"

Как видно, я ожидал response.data = {"returnCode":200,"username":"user1"}", но я не знаю, почему присутствует HTML. Это был простой тест, чтобы увидеть, работает ли пост. Я новичок в php и угловой и застрял в этой точке. Любая помощь будет по достоинству оценена.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Если вы пройдете через этот html-ответ, то увидите, что у вас есть не-объектная проблема в строках 11 и 12. Поэтому я думаю, что вы должны попытаться исправить это.

Notice: Trying to get property of non-object in C:\wamp64\www\itc\login.php on line <i>11</i>

Notice: Trying to get property of non-object in C:\wamp64\www\itc\login.php on line <i>12</i>

В соответствии с вашим кодом над строкой 11 qnd 12 равен

$username=$request->username;
$password=$request->password;

, который получает имя пользователя и пароль из json object $ request.

Для получения почтовых данных вы используете file_get_contents.

$postdata=file_get_contents("php://input");

и затем ваш объект json.

$request=json_decode($postdata,true);

Пожалуйста, проверьте, что вы получаете $ postdata в php. Для захвата постданных в php вы можете использовать $ _POST [].

с использованием error_reporting (0); исправит вашу проблему, но чтобы сделать ваш код правильным, вы должны исправить свое Уведомление, которое вы видите в ответе html

0 голосов
/ 28 июня 2018

Вы должны попытаться обработать, как PHP выдает ошибки вашему клиентскому приложению.

<?php
// Turn off error reporting
error_reporting(0);

// Report runtime errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Report all errors
error_reporting(E_ALL);

// Same as error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
?>

ссылка: https://www.w3schools.com/php/func_error_reporting.asp ссылка: http://php.net/manual/en/function.error-reporting.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...