Http Post没有以角度js将数据发送到另一个页面

时间:2015-11-04 05:14:23

标签: php angularjs http post

我正在使用Angular Js中的登录表单.HTML和验证部分工作正常。

问题是当我使用HTTP POST方法将数据发送到我的servicecall PHP页面并希望将其保存到数据库时。

我已经通过在JS

中设置它一直尝试过
headers: {'Content-Type': 'application/x-www-form-urlencoded'}

我尝试过将表单的enctype设置为

enctype="application/x-www-form-urlencoded" 

同样。但是他们都没有工作我无法通过$ _REQUEST,$ _POST,$ _GET这些方法获取数据。

我也尝试过使用PHP库函数。

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

但它提供了一些奇怪的字符串,我无法处理,因为POST数据的数量可能是数百。

所以这还有其他方法来解决问题。

http请求的代码是

var req = {
    method: 'POST',
    url: 'servicecall.php',
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    data: { 
            username: $scope.loginData.username,
            password: $scope.loginData.password,
            action : 'checkLogin'
        }  //First way of sending data

//Second way of sending data which is also not working
//data: "{username:"+$scope.loginData.username+",password:"+$scope.loginData.password+",action:checkLogin}" 

}  

$http(req).then(function(response){
        console.log(response);  
   }, function(response){
        alert("Error "+response);
   });

在PHP页面我做

print_r($_REQUEST);
print_r($_POST);

但它只打印像array{}

这样的空白数组

1 个答案:

答案 0 :(得分:1)

遵循我用于相同目的的代码。希望对您有所帮助。

var app = angular.module('angularApp', []);

app.controller('loginCtrl', function ($scope, $http) {

    $scope.login = function () {

            var request = $http({
                method: "post",
                url: "login.php",
                data: {
                    email: $scope.email,
                    password: $scope.password
                },
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
            });
            /* Successful HTTP post request or not */
            request.success(function (data) {
                if(data == "1"){
                    $scope.responseMessage = "Successfully Logged In";
                }
                else {
                    $scope.responseMessage = "Username or Password is incorrect";
                }
            });
    }
});