Ajax 忽略 URL

我尝试通过 JQuery 触发 onClick 事件发出 ajax 请求,但是当它发送 AJAX 请求时,我收到:


PATCH http://localhost:8000/courses 405(不允许方法)(当前页面)因为它没有获取带有 id 的 URL


超文本标记语言


@foreach ($courses as $course)

    <tr>

      <td>{{ Form::select('year', $years, ['class' => 'form-control'], [ 'placeholder' => $course->academicYear]) }}</td>

      <td>{{ Form::select('subject', $subjects, ['class' => 'form-control'], [ 'placeholder' => $course->subject]) }}</td>

      <td>

        <a href="" id="saveCourse" class="btn btn-success pull-left">Save</a>

        <input type="hidden" id="idCourse" value="{{ $course->id }}">

      (...)

JQuery+AJAX


$('#saveCourse').click(function(e){

        e.preventDefault();

        var id = $('#idCourse').val();


        // Ignore this logic

        var values = {year: "", subject:"", id: id};

        var parameters = ['year', 'subject'];

        var i = 0;

        $('td > select option:selected').each(function() {

            values[parameters[i]] = $(this).text();

            i++;

        });


        // Ajax request

        $.ajax({

            type: 'patch',


            // Appending the course id here not working, 

            // but if i put anything else like /blabla/ + id ajax doesn't ignore it...


            url:  '/courses/' + id,

            headers: {'X-CSRF-Token': csrf_token},

            dataType: 'json',

            data: values,


            success: function (response) {

                console.log("SUCCESS: " + response);

            },

            error: function (reject) {

                if( reject.status === 422 ) {

                    $("#error").text("Los datos dados no cumplen el formato requerido.");

                }

            }

        });

    });

网页版


/* -----COURSE_ROUTES------ */

    Route::resource('courses', 'CourseController')->except([

        'create', 'edit'

    ]);

航线

https://img1.sycdn.imooc.com/6533312800014ae614060084.jpg

编辑

如果我在AJAX 中使用POST而不是获取 id。PATCHtype

发现了同样问题的 GitHub 问题https://github.com/jquery/jquery/issues/3944


qq_遁去的一_1
浏览 135回答 4
4回答

千万里不及你

如下所述,405&nbsp;(METHOD NOT ALLOWED)基本上意味着PATCH服务器上的特定资源不允许使用 ajax 请求方法。如果您使用路由库,您可以转到他们的文档并搜索如何更改此行为。一个路由可以接受一种或多种请求方法,我假设默认情况下Route::resource使用方法创建路由POST,这说明ajax请求以POST类型工作。

ITMISS

不确定是否重要,但尝试使用 PATCH 而不是 patchtype:&nbsp;'PATCH',

犯罪嫌疑人X

PUT 和 PATCH 是请求方法。您收到的 HTTP 错误 405 意味着服务器知道请求方法,但服务不支持它。

梦里花落0921

我忘记将此条件放在控制器中更新方法的开头......现在它可以工作了!if(request()->ajax())&nbsp;{&nbsp;...&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP