因此,我在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动作时,我得到了这个:
但是,如果我评论boostFree()函数,我得到:
问题是,无论是200还是500,我都是从Laravel得到的 RouteCollection.php第207行中的MethodNotAllowedHttpException 错误
我几乎尝试了所有内容,将标记放入标题中,更改后期操作以获取(我知道这不会起作用),更改&#34;键入&#34;到&#34;方法&#34;在.ajax函数中。
希望有人可以帮助我,我真的很感激。 非常感谢。
答案 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;;