PATCH AJAX 在 Laravel 中请求
PATCH AJAX Request in Laravel
是否可以向 laravel 发出 AJAX PATCH 请求,或者我是否仅限于 POST? Laravel 在输入隐藏字段中使用 PATCH,但是,我没有使用表单元素——只是在单击时应部分更新记录的按钮(通过 AJAX 请求)。
这条路线看起来如何?
路由文件
Route::patch('questions/{id}', 'QuestionController@update')->before('admin');
我不确定laravel路由是否支持PATCH。
控制器
public function update($id) {
if (Request::ajax() && Request::isMethod('patch')) {
//partially update record here
}
}
JS
$('div#question_preview <some button selector>').click(function (event) {
$.ajax({
url: 'questions/'+question_id,
type: 'PATCH',
data: {status: 'some status'}
});
});
我只是想弄清楚,谢谢!
是的,有可能试试
在你的JavaScript
$('#div#question_preview <some button selector>').click(function() {
$.ajax({
url: 'questions/'+question_id,
type: 'PATCH',
data: {status: <SOME VALUE I WANT>, _method: "PATCH"},
success: function(res) {
}
});
});
在你的路线上
Route::patch('questions/{id}', 'QuestionController@update')->before('admin');
在您的 QuestionController 控制器的更新方法中
dd(Request::method());
您会看到类似
的回复
string(5) "PATCH"
在 Laravel doc 上阅读有关请求信息的更多信息。
有可能!
您应该需要在名为 _method
的表单请求中提供一个额外参数,其值为 PATCH
.
JS
$('div#question_preview <some button selector>').click(function (event) {
$.ajax({
url: 'questions/'+question_id,
type: 'PATCH',
data: {status: 'some status',_method: 'PATCH'}
});
});
您可以在视图文件中提供值为 PATCH
的隐藏输入,以提高可读性
HTML
<input type="hidden" name="_method" value="PATCH">
如果您使用的是 FormData
,则需要将请求发送为 POST
。 Laravel 应用程序将自动将其作为 PATCH
请求获取,因为您包含了 @method('PATCH')。所以你的路线和方法将被触发。
带有 FormData 的 JS
$('div#question_preview <some button selector>').click(function (event) {
let form_data= new FormData();
form_data.append('status','some status');
form_data.append('_method','PATCH');
$.ajax({
url: 'questions/'+question_id,
type: 'POST',
data: form_data
});
});
是否可以向 laravel 发出 AJAX PATCH 请求,或者我是否仅限于 POST? Laravel 在输入隐藏字段中使用 PATCH,但是,我没有使用表单元素——只是在单击时应部分更新记录的按钮(通过 AJAX 请求)。
这条路线看起来如何?
路由文件
Route::patch('questions/{id}', 'QuestionController@update')->before('admin');
我不确定laravel路由是否支持PATCH。
控制器
public function update($id) {
if (Request::ajax() && Request::isMethod('patch')) {
//partially update record here
}
}
JS
$('div#question_preview <some button selector>').click(function (event) {
$.ajax({
url: 'questions/'+question_id,
type: 'PATCH',
data: {status: 'some status'}
});
});
我只是想弄清楚,谢谢!
是的,有可能试试
在你的JavaScript
$('#div#question_preview <some button selector>').click(function() {
$.ajax({
url: 'questions/'+question_id,
type: 'PATCH',
data: {status: <SOME VALUE I WANT>, _method: "PATCH"},
success: function(res) {
}
});
});
在你的路线上
Route::patch('questions/{id}', 'QuestionController@update')->before('admin');
在您的 QuestionController 控制器的更新方法中
dd(Request::method());
您会看到类似
的回复string(5) "PATCH"
在 Laravel doc 上阅读有关请求信息的更多信息。
有可能!
您应该需要在名为 _method
的表单请求中提供一个额外参数,其值为 PATCH
.
JS
$('div#question_preview <some button selector>').click(function (event) {
$.ajax({
url: 'questions/'+question_id,
type: 'PATCH',
data: {status: 'some status',_method: 'PATCH'}
});
});
您可以在视图文件中提供值为 PATCH
的隐藏输入,以提高可读性
HTML
<input type="hidden" name="_method" value="PATCH">
如果您使用的是 FormData
,则需要将请求发送为 POST
。 Laravel 应用程序将自动将其作为 PATCH
请求获取,因为您包含了 @method('PATCH')。所以你的路线和方法将被触发。
带有 FormData 的 JS
$('div#question_preview <some button selector>').click(function (event) {
let form_data= new FormData();
form_data.append('status','some status');
form_data.append('_method','PATCH');
$.ajax({
url: 'questions/'+question_id,
type: 'POST',
data: form_data
});
});