我正在尝试将表单数据+附加参数“id”发送到服务器(Python,Google App Engine)。
我的表格:
<form method="post" action="/" id="form1" runat="server" enctype='multipart/form-data'>
<div class="fileButtons">
<input type='file' id="imgInp" name="imgInp" accept="image/*"/>
<input type="submit" id="submit" name="action" value="Send"/>
<input type='button' id='remove' name="remove" value="Remove" />
</div>
</form>
Javascript功能:
$( '#form1' ).submit(function( event ) {
event.preventDefault();
var data = $(this).serializeArray();
data.push({name: 'id', value: id});
$.ajax({
type: 'POST',
url: '/set_image',
data: data,
dataType: 'json',
success: function( resp ) {
console.log( resp );
}
});
});
data
只会收到ID。
使用Firebug进行调试时:我得到以下内容:
this form#form1
imgInp input#imgInp property value = "2.jpg" attribute value = "null"
remove input#remove attribute value = "Remove"
答案 0 :(得分:1)
可能是您尝试了错误。
而不是写作 var data = $(this).serializeArray(); data.push({name:&#39; id&#39;,value:id});
试试这个
var data = $(this).serializeArray(); data.push({id:$(&#34;#imgInp&#34;)。val});
答案 1 :(得分:1)
尝试像这样序列化你的数组:
var data = new FormData($(this)[0]);
有关详细信息,请参阅this answer,并注意它在旧版Internet Explorer中无效。如果您需要跨浏览器兼容性,则无法通过ajax提交文件。