php - Laravel 的 ajax 演示,一步一步

标签 php ajax laravel laravel-4

我认为这段代码有很多错误。我需要的是创建一个表单,执行 XHR 提交到 Controller ,获取数据,发送到模型,检查验证,使用验证输出返回到 Controller ,然后发送到 View 消息“错误或成功”

routes.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>

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


AJAX

<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}}

Controller

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
    }

}

最佳答案

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

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

至,

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

或者,

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

关于php - Laravel 的 ajax 演示,一步一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19127944/

相关文章:

php - MySQL 查询钉服务器处于 100% - 有时

javascript - 如何根据从 <iron-ajax> 接收的数据创建重复元素?

mysql - 如何使用laravel在mysql中插入Lat和Lng到点类型列?

javascript - Ajax 脚本管理器命名空间

javascript - 如何使用 javascript 通过验证 cookie 存储值和 ajax 响应来尝试 3 次登录表单

php - Laravel 5 : How can I load database values into the config/services. php 文件?

php - 以正确的顺序在保存时更新 Laravel Eloquent 增变器值

php - 使用 MYSQL、PHP 和 AJAX 的慢速代码

javascript - 在数组中使用未选中和选中的框

php - Doctrine generate-migrations-diff 和 migrate