Javascript AngularJS:登录函数在PHP代码中不起作用
目前,我正在尝试使用AngularJS框架创建登录函数。我试图创建一个登录函数,但它正在执行else语句。我能知道如何解决这个问题吗 这是我的login.php代码:Javascript AngularJS:登录函数在PHP代码中不起作用,javascript,php,angularjs,Javascript,Php,Angularjs,目前,我正在尝试使用AngularJS框架创建登录函数。我试图创建一个登录函数,但它正在执行else语句。我能知道如何解决这个问题吗 这是我的login.php代码: $params = json_decode(file_get_contents('php://input'),true); if(!isset($_SESSION)){ session_start(); } include "classes/filmService.class.php"; $db = pdoDB::
$params = json_decode(file_get_contents('php://input'),true);
if(!isset($_SESSION)){
session_start();
}
include "classes/filmService.class.php";
$db = pdoDB::getConnection();
header("Content-Type: application/json");
if(isset($params['userid']) && isset($params['password'])){
$userid = $params['userid'] ;
$password = $params['password'];
$service = new FilmService();
$result = $service->loginRob($userid,$password);
echo $result;
}else{
echo '{"status": "fail", "message": "Please enter email & password la!!."}';
}
这是我的services.js代码:
this.login = function (userID, passwd) {
var defer = $q.defer(),
data = {
//action: 'loginRob',
userid: userID,
password: passwd
};
$http({
method: 'POST',
url: loginUrl,
params: data,
cache: true,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}). // notice the dot to start the chain to success()
success(function (response) {
defer.resolve({
data: response.status, // create data property with value from response
result: response,
user: response.username
});
console.log(response);
}). // another dot to chain to error()
error(function (err) {
defer.reject(err);
});
// the call to getCourses returns this promise which is fulfilled
// by the .get method .success or .failure
return defer.promise;
};
这是我的controller.js代码:
.controller('LoginController',
[
'$scope',
'dataService',
'$location',
'$window',
'$rootScope',
function ($scope, dataService, $location, $window, $rootScope){
$scope.check_login = function($event,userID,passwd){
if(userID && passwd){
dataService.login(userID,passwd).then(
function (response){
if(response.result.status=='ok'){
$scope.user = response.user;
$rootScope.$broadcast("passuser", $scope.user);
}else{
$scope.message = response.result.message;
}
},
function (err) {
$scope.status = 'unable to connect to data' + err;
}
);
$scope.reloadRoute = function () {
$location.path('/#');
//$window.location.reload()
}//end of reload route fnction
}
}//end of function check_login
}
]
);//end of login controller
这是登录的记录集代码:
function getLoginRecord($sql, $elementName = "ResultSet", $params = null) {
$stmt = parent::getRecordSet($sql, $params);
$recordSet = $stmt->fetchAll(PDO::FETCH_ASSOC);
$nRecords = count($recordSet);
$loginSuccess = "";
if ($nRecords == 0) {
$status = 'error';
$message = json_encode("Invalid username or password");
$result = '[]';
$loginSuccess="{\"status\": \"$status\", \"message\":$message}";
}
else {
$status = 'ok';
$message = json_encode("Success");
//$userName=json_encode($recordSet[0]['username']);
$result = json_encode($recordSet);
// $session = Session::getInstance();
// $session->setProperty('user', $recordSet[0]['username']);
// $session->setProperty('user_email', $recordSet[0]['email']);
$loginSuccess="{\"status\": \"$status\", \"message\":$message }";
}
return $loginSuccess;
}
如果有人能帮我,我真的很感激。提前感谢。设置
$http
的方式有几个问题
您正在$http
配置中使用params
,该配置用于GET not POST。需要为POST设置数据
您正在将contentType切换为form encoded,但尝试在php中作为json接收。如果您希望以编码的形式发送,则需要进行大量更改
现在让我们以json数据的形式发送,因此请尝试切换到:
$http.post(loginUrl, data). // notice the dot to start the chain to success()
success(function (response) {
defer.resolve({
data: response.status, // create data property with value from response
result: response,
user: response.username
});
console.log(response);
}). // another dot to chain to error()
error(function (err) {
defer.reject(err);
});
然后,在php中,如果仍然没有得到正确的响应,则需要进行一些非常基本的调试,以查看是否确实发送了数据。控制台中是否有错误?你正确地注入依赖项了吗?没有错误@AlonEitan它只显示
echo'{“状态”:“失败”,“消息”:“请输入电子邮件和密码la!!。”}”控制台中的code>一次Iconsole.log(响应)
请看一下这个答案,那么$scope是如何调用的。请检查正在调用的\u login()
,参数的值从何而来?您确定它们甚至在控制器中定义,因此在请求中定义吗?奇怪的是,userId和password不是绑定在ng model
中的作用域变量,这里有太多的未知数,并且没有给出调试/故障排除信息。使用浏览器开发工具网络检查实际请求,以准确查看发送的内容。现在需要隔离问题所在的位置,但是登录验证工作不正常。现在您正在创建一个全新的问题,不应该将其添加到此问题中。我为您提供了修复原始问题的解决方案,您应该开始一个新的验证方案,其中包括正确的问题陈述