Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 方法不允许(PUT)在Laravel 5.2中使用AJAX调用_Php_Jquery_Laravel_Laravel 5_Laravel 5.2 - Fatal编程技术网

Php 方法不允许(PUT)在Laravel 5.2中使用AJAX调用

Php 方法不允许(PUT)在Laravel 5.2中使用AJAX调用,php,jquery,laravel,laravel-5,laravel-5.2,Php,Jquery,Laravel,Laravel 5,Laravel 5.2,我的刀是: {!! Form::open(['method' => 'PUT', 'id' => 'confirmTCU', 'action' => ['TournamentUserController@confirmUser', $tournament->slug, $categoryTournament->id,$user->slug ]]) !!} 它生成我的表单: <f

我的刀是:

{!! Form::open(['method' => 'PUT', 'id' => 'confirmTCU',
                                    'action' =>  ['TournamentUserController@confirmUser', $tournament->slug, $categoryTournament->id,$user->slug  ]]) !!}
它生成我的表单:

<form method="POST" action="http://laravel.dev/tournaments/bisque/categories/1/users/admin/confirm" accept-charset="UTF-8" id="confirmTCU">
<input name="_method" type="hidden" value="PUT">
<input name="_token" type="hidden" value="tiaIHtctMbo1NwbEK8TqoKOyrN8ZSyeQELSyYL9A">

<button type="submit" class="btn btn-flat text-warning-600 btnConfirmTCU" id="confirm_bisque_1_admin" data-tournament="bisque" data-category="1" data-user="admin">
    <i class="text-danger glyphicon glyphicon-remove-sign"></i>
</button>
</form>
我的路线是:

Route::put('tournaments/{tournamentId}/categories/{categoryTournamentId}/users/{userId}/confirm', 'TournamentUserController@confirmUser');
我的控制器是:

public function confirmUser($tournamentSlug, $tcId, $userSlug)
{
    $user = User::findBySlug($userSlug);
    $ctu = CategoryTournamentUser::where('category_tournament_id', $tcId)
        ->where('user_id', $user->id)->first();

    $ctu->confirmed ? $ctu->confirmed = 0 : $ctu->confirmed = 1;
    $ctu->save();
    return redirect("tournaments/$tournamentSlug/users");
}
我看到了很多关于它的话题,但没有一个能解决我的问题

由于大多数浏览器都不允许使用PUT,所以Laravel会像POST一样发送它,但包含一个带有PUT值的隐藏字段方法

此外,我可以执行删除操作,但不能放置

此外,在不使用AJAX的情况下,该方法可以完美地工作


我的问题在哪里?

将您的ajax类型从“PUT”更改为“POST”,Laravel将读取您的参数“\u method”,并将该“POST”视为“PUT”。

您的代码应该可以正常工作,但看起来您序列化了错误的表单。当前代码显示
var inputData=$('#formdeletetetcu')。serialize(),但您显示的表单id为
confirmTCU

不工作:POST 405(不允许使用方法)是否序列化了正确的表单?当前代码显示
var inputData=$('#formdeletetetcu')。serialize(),但是您显示的表单id是
confirmTCU
。是的!让我调查一下!请把它作为答案!成功了!完成。很高兴我能帮忙。
public function confirmUser($tournamentSlug, $tcId, $userSlug)
{
    $user = User::findBySlug($userSlug);
    $ctu = CategoryTournamentUser::where('category_tournament_id', $tcId)
        ->where('user_id', $user->id)->first();

    $ctu->confirmed ? $ctu->confirmed = 0 : $ctu->confirmed = 1;
    $ctu->save();
    return redirect("tournaments/$tournamentSlug/users");
}