我有一个非常简单的表格用于测试目的,当我尝试使用$ .ajax放置formData时,我得到一个空数组响应,但这仅在使用PUT方法时发生,如果我使用POST而不是PUT方法按预期工作。
我正在使用Laravel 6,每个函数中都有一个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,因为我要放入图像文件。我一直在寻找另一个类似的问题,但没人能解决我的问题。
还有另一种方法可以执行此操作吗?
<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令牌包含到表单中。
然后在您的AJAX代码中,将类型:'PUT'更改为类型:'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);
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句