jquery - html form.serialize 返回空字符串
问题描述
我有一个input
上传图像的文件,我想将该图像发送到裁剪它的插件。
要将input
文件转换为base64
,我正在尝试向我们的 php 服务器发出 ajax 请求。如果我得到 via jquery 的value
,input
我会得到“C:/fakepath ...”,所以我试图form
用这个提交一个input
。
这在 ainput
中使用的element
(可重用组件)中使用form
,因此我创建了一个form
与 "parent" 无关的嵌套form
。
我的问题是,当尝试form
通过 jquery 的serialize
方法获取数据时,我得到一个空的string
. 我如何获取form
数据?
<script>
$(document).ready(function() {
$("#picture").change(function(){
let formData = $('#upload-picture-form').serialize(); //returns ""
$.ajax({
url: '/users/getBase64',
type: 'post',
dataType: 'json',
data: formData,
success: function(data) {
alert(data);
},
fail: function (data) {
alert(data);
}
});
});
});
</script>
<section>
<?php echo $this->Form->input('User.avatar', [
'label' => false,
'type' => 'file',
'class' => 'form-control picture',
'value' => '',
'after' => '<br><br><br>',
'form' => 'upload-picture-form',
]); ?>
</section>
<?php
echo $this->Form->create('User', [
'id' => 'upload-picture-form',
'type' => 'get',
'enctype' => 'multipart/form-data',
'action' => 'getBase64'
]);
echo $this->Form->end();
?>
html输出结构:
<form enctype="multipart/form-data" method="post" accept-charset="utf-8">
... (divs, fieldsets, sections)
<script>...</script> (see above)
<form action="/users/getBase64" id="upload-picture-form" enctype="multipart/form-data" method="get" accept-charset="utf-8"></form>
</fieldset>
</form>
解决方案
推荐阅读
- c# - 当类型转换为实际类类型时,将模拟接口类型转换为 null
- yaml - 如何将 changelog.yaml 分成小节?
- c# - C# 中是否有更好的方法来保留长变量名?
- c++ - R 值引用和 std::make_unique
- python - Scapy - 添加类型依赖于其他字段的字段
- python - Python - IndexError:运行python代码时列出的索引超出范围
- java - 为什么 sun.misc.Launcher 在 Java 中有一个公共构造函数?
- java - 多个 Spring Batch 作业同时执行导致死锁
- php - Varnish 抛出 503 错误
- flutter - 即使有可用空间,NestedScrollView 主体也会继续滚动