[英]Using PUT method AJAX results in empty $request->all() array in Laravel 6
我有一個非常簡單的表單用於測試目的,當我嘗試使用 $.ajax 放置 formData 時,我得到一個空數組響應,但這僅在我使用 PUT 方法時發生,如果我使用 POST 而不是 PUT 方法按預期工作。
我正在使用 Laravel 6,我在每個 function 中都有一個 var_dump:
var_dump($request->all())
當我使用 PUT 方法時,我得到:
array(0) {}
當我使用 POST 方法時,我得到:
array(4) { ["form1"]=> string(1) "1" ["form2"]=> string(1) "2" ["form3"]=> string(1) "3" ["form4"]=> string(1) "4" }
我需要 formData,因為我要 PUT 圖像文件。 我一直在尋找另一個類似的問題,但沒有人解決我的問題。
還有另一種方法可以執行此操作嗎?
<form id="formTest" type="multipart/form-data">
<input name="form1" value="1">
<input name="form2" value="2">
<input name="form3" value="3">
<input name="form4" value="4">
<button type="submit">Accept</button>
</form>
<script>
$(document).ready(function () {
$('#formTest').on('submit', function (e) {
e.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: '<?echo($config->get('apiUrl'))?>movies/13',
type: 'PUT',
processData: false,
contentType: false,
data: formData,
success: function(result)
{
},
error: function(data)
{
console.log(data);
}
});
});
});
</script>
嘗試在表單中添加這兩個輸入字段。
<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
第一個是將表單提交方法更改為“PUT”,第二個是將 CSRF Token 包含到表單中。
然后在您的 AJAX 代碼中,將type: 'PUT'更改為type: 'POST' 。
$.ajax({
url: '<?echo($config->get('apiUrl'))?>movies/13',
type: 'POST',
processData: false,
contentType: false,
data: formData,
success: function(result) {},
error: function(data) {
console.log(data);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.