我有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和angular的新手,并停留在这一点上。任何帮助将不胜感激。
答案 0 :(得分:0)
您应该尝试处理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
答案 1 :(得分:0)
如果您要通过该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行第12行上方的代码,
$username=$request->username;
$password=$request->password;
从json对象$ request获取用户名和密码。
要获取帖子数据,请使用file_get_contents。
$postdata=file_get_contents("php://input");
然后是您的json对象。
$request=json_decode($postdata,true);
请检查您是否在php中获得了$ postdata。 要捕获php中的postdata,可以使用$ _POST []。
使用 error_reporting(0); 将解决您的问题,但要使代码正确,您应该修复在HTML响应中出现的Notification