Ajax 演示拉维尔,一步一步


ajax demo for laravel, step by step

我认为这段代码有很多错误。我需要的是创建一个表单,向控制器提交XHR,获取数据,发送到模型,检查验证,返回控制器并输出验证,然后将消息"错误或成功"发送到视图

路线.php

Route::get('checkValidationEmail', 'HomeController@checkValidationEmail');

<?php
echo Form::open(array('url' => 'checkValidationEmail', 'class' => 'form_notify'));
echo Form::text('Email', Input::old('Email'),  array('placeholder'=>'Email', 'class' => 'hg'));
echo Form::close() 
?>
<a href="#" class="send_email"> Notify Me!</a>

好的,这工作正常,接下来,问题开始了。


阿贾克斯

<script>
    $(function () {
        $(".send_email").click(function () {
            email = $('.hg').val();
            $.ajax({
                type: "POST",
                url: 'checkValidationEmail', //what is the correct url?
                data: {
                    email: email
                }
            }).done(function (msg) {
                alert(msg);
            });
        });
    });
</script>

500 错误:

{"error":{"type":"Symfony''Component''HttpKernel''Exception''MethodNotAllowedHttpException","message":"","file":"C:''VertrigoServ''www''laravel''vendor''laravel''framework''src''Illuminate''Routing''Router.php","line":1439}}

控制器

class HomeController extends BaseController {
       public function checkValidationEmail() {
           //how to get the data from form and pass to the model, more exactly validate($input)
                   if ($validation) {
                      return true;  
                   }
                   else {
                      return 'incorrect email'; //how send this message to the view?
                   }
       }
}

class Home extends Eloquent {
    protected $table = 'emails';
    public function validate($input) {
       //validations
    }
}

在您的路由中,您将checkValidationEmail定义为GET请求,并且从 ajax 尝试将其作为POST请求进行访问。所以这会抛出MethodNotAllowedHttpException.所以你必须改变你的路线,

Route::get('checkValidationEmail', 'HomeController@checkValidationEmail');

Route::post('checkValidationEmail', 'HomeController@checkValidationEmail');

Route::any('checkValidationEmail', 'HomeController@checkValidationEmail');