将ajax数据发送到控制器

时间:2017-11-18 18:48:54

标签: php ajax

不使用MVC,我会有一个页面有一些jQuery,它对特定的php页面进行ajax调用,如:

$(document).ready(function(){
    $( "#login" ).on("click", function(e) {
        e.preventDefault();
        var form = $( "#loginForm" ).serialize();
        $.ajax({
            url: 'somePage.php',
            type: 'POST',
            dataType: 'json',
            data: form,
        })
        .done(function (data) {
            if(!data.success) {

                console.log(data.message);

            } else {

                console.log(data.message);
            }
        })
        .fail(function (jqXHR, textStatus, errorThrown) {
                console.log(textStatus + ': ' + errorThrown);
                console.warn(jqXHR.responseText);
            });
    });
});

somePage.php看起来像:

if($_POST) {

    $response = array();
    $message = "";

if(empty($_POST['name'])) {

        $message .= "Name required";
    }

if($message) {

        $response['success'] = false;
        $response['message'] = $message;

    } else {

        // add data to database
        $response['success'] = true;
        $response['message'] = "Success";

    }

    echo json_encode($response);
}

我是MVC和OOP的新手,我只是想知道如何更改它,因为我需要在控制器中进行验证,然后将数据发送到模型以进行数据库插入。这里ajax的目的只是在提交表单时阻止页面刷新,如果验证失败则显示错误消息,如果通过则显示成功消息,然后将数据插入数据库。

这就是我的控制器目前对非ajax提交的看法:

public function test() {

        if($_POST) {


            $data = [

                'email' => trim($_POST['email']),
                'email_err' => '' 
            ];

            if(empty($_POST['email'])) {

                $data['email_err'] = 'Email required';
            }

            if(empty($data['email_err'])) {

                //send data to model

            } else {

                $this->view('users/login', $data);
            }

        } else {

            $data = [

                'email' => '',
                'email_err' => ''
            ];

            $this->view('users/login', $data);
        }
    }

所以,问题基本上是如何获得对控制器和模型的ajax响应?错误消息将显示在视图中。

0 个答案:

没有答案