如何使用ajax进行表单提交

时间:2015-06-09 00:25:04

标签: php html angularjs codeigniter

您好我是角色的新手,我正在尝试提交表单并检查我的mysql数据库(如果用户在场)。我的所有代码都工作,因为当我把json直接放在我的php / codeigniter代码中时,我得到了我正在寻找的员工。我认为我的问题是将数据从我的角度转移到php。

这是我的HTML

<div class="login-content">
    <form ng-controller="loginController" ng-submit="processForm()" class='margin-bottom-0' accept-charset="utf-8">
        <div class="form-group m-b-20">
            <input type="text" ng-model="formData.AccessKey" required="true" id="AccessKey" class="form-control input-lg" placeholder="Access Key" />
        </div>
        <div class="form-group m-b-20">
            <input type="password" ng-model="formData.Password" required="true" id="Password" class="form-control input-lg" placeholder="Password" />
        </div>
        <div class="login-buttons">
            <button type="submit" name="IsPostBack" value="true" class="btn btn-primary btn-block btn-lg">Login</button>
        </div>
    </form>
</div>

这是我的角度代码

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

$scope.processForm = function(){
    $http({
        method  : 'GET',
        url     : 'http://localhost:8888/employees/login',
        data    : $scope.formData = {},
        header  : {'Content-Type': 'application/x-www-form-urlencoded'}
    })
        .success(function(data){
            console.log(data);

        })
};

});

这是我使用codeigniter框架的php im。这是控制器

public function login()
{
    $this->employees_model->login();
}

这是我在php中的模型

public function login()
{
    $data = $this->input->get('data');

    //$data = '{"AccessKey":"candoa01@gmail.com","Password":"candoa21"}';
    $data =  json_decode($data);

    $AccessKey = $data->AccessKey;
    $Password = $data->Password;

    $sql = "SELECT *
            FROM Employees
            WHERE Employees.AccessKey = ?
            AND Employees.Password = ?";

    $query = $this->db->query($sql, array($AccessKey, $Password));

    if($query->num_rows() > 0)
    {
        $query = json_encode($query->result());
        return $this->output
            ->set_content_type('application/json')
            ->set_output($query);
    }
    else
    {
        return 'Invalid AccessKey Or Password';
    }
}

这是我得到的错误

尝试在第173行获取非对象的属性

第173行$ AccessKey = $ data-&gt; AccessKey;

所以我不认为我正确地传递了这些值。

2 个答案:

答案 0 :(得分:0)

添加此标题,看看会发生什么:

{"Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"}

答案 1 :(得分:0)

首先,角度代码中的下一行将始终在发送请求之前重置formData:

    data    : $scope.formData = {},

因此,请将其更改为

    data    : $scope.formData,

其次,我认为数据配置不适用于GET方法。如果可能,请尝试POST:

    method  : 'POST',

我不知道你正在使用什么PHP框架,但这对我来说似乎不错。至少通过简单解决上述问题,我的案例中的对话就起作用了。

当您在将来遇到类似问题时,可能首先要在服务器端记录所有请求:

Log::info($this->input->all()); // Something like this? I'm guessing.