为了账号安全,请及时绑定邮箱和手机立即绑定

Ajax 忽略 URL

Ajax 忽略 URL

PHP
qq_遁去的一_1 2023-10-21 10:01:03
我尝试通过 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'    ]);航线编辑如果我在AJAX 中使用POST而不是获取 id。PATCHtype发现了同样问题的 GitHub 问题https://github.com/jquery/jquery/issues/3944
查看完整描述

4 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

如下所述,405 (METHOD NOT ALLOWED)基本上意味着PATCH服务器上的特定资源不允许使用 ajax 请求方法。

如果您使用路由库,您可以转到他们的文档并搜索如何更改此行为。一个路由可以接受一种或多种请求方法,我假设默认情况下Route::resource使用方法创建路由POST,这说明ajax请求以POST类型工作。


查看完整回答
反对 回复 2023-10-21
?
ITMISS

TA贡献1871条经验 获得超8个赞

不确定是否重要,但尝试使用 PATCH 而不是 patch

type: 'PATCH',


查看完整回答
反对 回复 2023-10-21
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

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

查看完整回答
反对 回复 2023-10-21
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

我忘记将此条件放在控制器中更新方法的开头......现在它可以工作了!

if(request()->ajax()) { ... }


查看完整回答
反对 回复 2023-10-21
  • 4 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信