【发布时间】:2020-08-20 11:27:08
【问题描述】:
我尝试通过触发 onClick 事件的 JQuery 发出 ajax 请求,但是当它发送我收到的 AJAX 请求时:
PATCH http://localhost:8000/courses 405(不允许的方法)(当前页面)因为它没有得到带有id的URL
HTML
@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.");
}
}
});
});
WEB.PHP
/* -----COURSE_ROUTES------ */
Route::resource('courses', 'CourseController')->except([
'create', 'edit'
]);
编辑
如果我在 type 中使用 POST 而不是 PATCH,则 AJAX 会获取 id。
在 GitHub 上发现了同样的问题https://github.com/jquery/jquery/issues/3944
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
@DigitalDrifter 如果我记录
.val()我得到正确的索引所以 url 没问题,我可以看到它记录但AJAX不知何故正在动态更改 URL。我有一个非常相似的代码在做同样的事情,它正在工作,我比较了两个文件,它们几乎是一样的。
标签: javascript php jquery ajax laravel