【发布时间】:2021-05-27 08:11:03
【问题描述】:
我搜索了很长时间,找到了很多答案,但没有适合我的解决方案:(
问题:执行ajax PATCH请求时,服务器返回:
“此路由不支持GET方法。支持的方法:PATCH。”
我正在使用 Laravel 8,还有其他路线可以完美运行。
路线:
Route::prefix('prefix1')->name('prefix1.')->middleware(['auth', 'isUserActive'])->group(function ()
{
Route::prefix('prefix2')->name('prefix2.')->group(function ()
{
Route::patch('/update_field_ajax/{ID}', [RelevantController::class, 'update_field_ajax'])->name('update_field_ajax');
}
}
刀片视图:
<select id="elementID" name="elementNAME" onchange="relevantFunction()" data-update-url="{{ route('prefix1.prefix2.update_field_ajax', $ID)}}" data-field_ID="relevant_DB_field">
<option value="0" {{ $prist_popust ? "" : "selected" }} disabled>Določite popust</option>
<option value="0" {{ $prist_popust == "0" ? "selected" : "" }}>popust 0%</option>
<option value="25" {{ $prist_popust == "25" ? "selected" : "" }}>popust 25%</option>
<option value="50" {{ $prist_popust == "50" ? "selected" : "" }}>popust 50%</option>
<option value="75" {{ $prist_popust == "75" ? "selected" : "" }}>popust 75%</option>
<option value="100" {{ $prist_popust == "100" ? "selected" : "" }}>popust 100%</option>
</select>
JS代码:
function relevantFunction() {
var prist_strosek = {{ $prist_strosek }};
var prist_popust = document.getElementById('prist_popust').value;
var field_ID = document.getElementById('prist_popust').getAttribute('data-field_ID');
var update_url = document.getElementById('prist_popust').getAttribute('data-update-url');
prist_strosek = prist_strosek - (prist_strosek / 100 * prist_popust);
$('#prist_znes').html(prist_strosek + ' €');
UpdateDBField(update_url, prist_popust, field_ID);
}
function UpdateDBField(update_url, field_VAL, field_ID) {
if (update_url!="") {
auth_check();
$.ajax({
url: update_url,
type: 'PATCH',
data: {fieldId: field_ID, fieldVal: field_VAL, _token: "{{ Session::token() }}", _method: "PATCH"},
success: function(result) {
if (result.status == "error") {
alert(result.text);
}
}
}).fail(function () {
alert('Napaka pri komunikaciji s strežnikom!');
});
}
}
【问题讨论】:
-
这条路线和路线有区别吗,哪里可以正常运行?
-
您在控制台中看到了吗,请求是作为 PATCH http 方法进行的吗? laravel还有另外一种方式,可以在get request
_method=patch中添加额外的查询字符串 -
@Geshode 没有,至少我找不到。
-
@Girish 从控制台:PATCH http://.../prefix1/prefix2/update_field_ajax/73464352 500(内部服务器错误)
-
好的,请看回复,会有服务器代码语法错误,不支持的方法错误代码是405。