【问题标题】:Laravel AJAX Form 405 ErrorLaravel AJAX 表单 405 错误
【发布时间】:2016-02-02 15:06:39
【问题描述】:

我在尝试通过 AJAX 提交时收到此错误。当不使用 AJAX 时,表单提交到它指定的 url 就好了。我读过这个错误可能会发生,因为表单试图在浏览器中与 AJAX 请求一起提交。我试过使用 onsubmit="event.preventDefault()"。

路线:

Route::post('/post/{id}', [
    'uses' => '\App\Http\Controllers\PostController@postMessage',
    'as' => 'post.message',
    'middleware' => ['auth'],
]);

表格:

<form id="post" role="form" action="{{ route('post.message', ['id' => $user->id]) }}" onsubmit="event.preventDefault()">
    <div class="feed-post form-group{{ $errors->has('post') ? ' has-error' : ''}}">
        <textarea class="form-control feed-post-input" rows="2" id="postbody" name="post" placeholder="What's up?"></textarea>
        <div class="btn-bar">
            <!-- <button type="button" class="btn btn-default btn-img btn-post" title="Attach an image"><span class="glyphicon glyphicon-picture"></span></button> -->
            <!-- <input type="file" id="img-upload" style="display:none"/> -->
            <button class="btn btn-default btn-post" title="Post your message"><span class="glyphicon glyphicon-ok"></span></button>
        </div>
        @if ($errors->has('post'))
            <span class="help-block">{{ $errors->first('post') }}</span>
        @endif
    </div>
    <input type="hidden" name="_token" value="{{ CSRF_token() }}">
</form>

控制器:

public function postMessage(Request $request, $id)
{

        $this->validate($request, [
            'post' => 'required|max:1000',
        ]);
  if(Request::ajax()){
         Auth::user()->posts()->create([
             'body' => $request->input('post'),
             'profile_id' => $id
         ]);
  }
}

JS:

$('#post').submit(function(){
    var body = $('#postbody').val();
    var profileId = $('#user_id').text();
    var postRoute = '/post/'+profileId;

    var dataString = "body="+body+"&profile_Id="+profileId;

    $.ajax({
        type: "POST",
        url: postRoute,
        data: dataString,
        success: function(data){
            console.log(data);
        }
    });
});

【问题讨论】:

    标签: ajax laravel


    【解决方案1】:

    试试这个,删除

    onsubmit="....." attribute from form
    

    并像这样更新您的提交方法

    $('#post').submit(function(event){
        var body = $('#postbody').val();
        var profileId = $('#user_id').text();
        var postRoute = '/post/'+profileId;
    
        var dataString = "body="+body+"&profile_Id="+profileId;
    
        $.ajax({
            type: "POST",
            url: postRoute,
            data: dataString,
            success: function(data){
                console.log(data);
            }
        });
    
       //this will prevent your default form submit 
       event.preventDefault();
    });
    

    我希望这对你有用

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 2019-01-24
      • 2019-07-29
      • 2018-01-25
      • 1970-01-01
      • 2018-03-07
      • 2017-11-15
      • 2018-05-20
      • 2017-06-04
      相关资源
      最近更新 更多