Laravel中有两种形式的Ajax帖子

时间:2015-05-29 20:23:57

标签: jquery ajax laravel-5

因此,我在Laravel 5中通过ajax发送帖子请求时遇到问题。 我在视图中有两个表单,其中一个正在进行ajax调用。

首先,路线:

Route::post('partidoBoostFree', 'PartidoController@boostFree');
Route::resource('partido', 'PartidoController');

这是在视图中进行调用的表单:

<div class="col-md-4 boostPanel">

        <div class="panel-body">

            <div class="input-group">
                {!! Form::open([  'url' => 'partidoBoostFree', 'id' => 'guardaBoostFree', 'method' => 'POST' ]) !!}
                 <input type="hidden" name="_token" value="{{{ Session::getToken() }}}">


                {!! Form::hidden('id_boost_free', $partidoBoost->id, ['id' => 'id_boost_free']) !!}
                {!! Form::text('juegatela', null, ['class' => 'form-control', 'id' => 'juegatela', 'placeholder' => 'Puntos a jugar']) !!}
            </div>

            {!! Form::submit('Juégatela', ['class' => 'btn btn-primary form-control', 'id'=>'juegatelaSbmt', 'disabled' => 'disabled']) !!}
            {!! form::close() !!}

        </div>
</div>

这是JS:

$('#juegatelaSbmt').click(function(e){
    e.preventDefault();
    e.stopPropagation();

    $.ajax({
      url: '/partidoBoostFree',
      method: 'POST',
      data: {
        'idPartido' : $('#id_boost_free').val(),
        'puntos' : $('#juegatela').val(),
        '_token': $('input[name=_token]').val()
      },
      success: function(data){
        $('.boostPanel .panel-body').html(data);
      }
    })

  });

最后是控制器:

public function boostFree(){

        if ( Request::ajax() ){

            $data = Input::all();

            if( $data[puntos] > 0 && $data[puntos] < 4 ){

                if( $this->partidoRepo->getPartido_Usuario( $data[idPartido], Auth::user() )  ){
                    $apuesta = $this->apuestaRepo->postApuestaFree( $data[idPartido], Auth::user(), $data[puntos] );

                    if($apuesta){
                        return "<div class='alert alert-info' role='alert'>
                                <p>Te la jugaste. Suerte!!!</p>
                                </div>";
                    }else{
                        flash()->error('Hubo un problema, intentalo más tarde');
                    }
                }else{
                    //Regresa mensaje de que haga la quiniela por lo menos para el partido
                }
            }else{
                //Regresa un mensaje de seleccionar el min o máximo de puntos a jugar.
            }
        }
    }

这里有趣的是,当我在检查员中做出ajax动作时,我得到了这个:

Response 500

但是,如果我评论boostFree()函数,我得到: Response200

问题是,无论是200还是500,我都是从Laravel得到的 RouteCollection.php第207行中的MethodNotAllowedHttpException 错误

我几乎尝试了所有内容,将标记放入标题中,更改后期操作以获取(我知道这不会起作用),更改&#34;键入&#34;到&#34;方法&#34;在.ajax函数中。

希望有人可以帮助我,我真的很感激。 非常感谢。

2 个答案:

答案 0 :(得分:0)

我相信Laravel会向您提供MethodNotAllowed例外,因为您尝试发布到/partidoBoostFree,但路线已在partidoBoostFree上设置。您应该使用artisan命令行工具检查您的路线:

php artisan route:list

这将为您提供所有路线的列表,您可以验证它们的设置方式。

我还建议您命名路线,以便您可以按名称引用它们,而不必记住确切的URL。

创建命名路线:

Route::post('/partidoBoostFree', array(
    'as'    =>    'partidoBoostFree',
    'uses'  =>    'PartidoController@boostFree'
));

引用指定路线:

{{ route('partidoBoostFree') }}

这是一个很好的方法,因为您可以随时更改路径的URL,而不会破坏引用该路由的代码,只要您按名称引用它并且名称不会更改。

答案 1 :(得分:0)

设置类似的东西 url:window.location.origin +&#39; / your-url&#39;;

更多: 访问此链接 http://sumanshresth.com.np/using-ajax-in-laravel/