Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向控制器发送ajax数据_Php_Ajax - Fatal编程技术网

Php 向控制器发送ajax数据

Php 向控制器发送ajax数据,php,ajax,Php,Ajax,如果不使用MVC,我会有一个页面,其中包含一些jQuery,可以对特定的php页面进行ajax调用,如: $(document).ready(function(){ $( "#login" ).on("click", function(e) { e.preventDefault(); var form = $( "#loginForm" ).serialize(); $.ajax({ url: 'somePage.p

如果不使用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响应?错误消息将显示在视图中

我建议使用一种路由方法。向动态路由发送请求以执行一个方法,然后创建一个控制器来使用该数据。我建议使用路由方法。向动态路由发送请求以执行方法,然后创建控制器以使用该数据。