【问题标题】:ajax demo for laravel, step by steplaravel 的 ajax 演示,一步一步
【发布时间】:2013-10-08 07:22:02
【问题描述】:

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

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

控制器

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
    }

}

【问题讨论】:

  • 那么有什么问题呢?
  • @GladToHelp,基本上,第一个以 $.ajax 中的错误 500 开头。
  • 有几种方法可以在 Laravel 中设置正确的路由。其中之一是: $url = URL::to('checkValidationEmail');您可能需要先查看文档:laravel.com/docs/routing。至于在服务器端获取数据,可以通过:$input = Input::get('email');.
  • @GladToHelp 你的意思是 url: '', ?这给了我同样的错误。
  • 您正在尝试发出 POST 请求,而在您的 routes.php 中您已经定义了一个只允许 GET 请求的路由。您可以将其更改为 Route::post('checkValidationEmail', 'HomeController@checkValidationEmail');或 Route::any('checkValidationEmail', 'HomeController@checkValidationEmail');

标签: php ajax laravel laravel-4


【解决方案1】:

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

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

到,

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

或者,

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

【讨论】:

    猜你喜欢
    • 2019-10-29
    • 2023-04-02
    • 2016-05-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多