0

I'm trying to send the form data + additional parameter "id" to the server (Python, Google App Engine).

My form:

 <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 function:

$( '#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 only receives the id.

When debugging it with Firebug: I get the following:

this form#form1

  imgInp input#imgInp property value = "2.jpg" attribute value = "null"

  remove input#remove attribute value = "Remove"
4

2 回答 2

1

尝试像这样序列化您的数组:

var data = new FormData($(this)[0]);

有关更多信息,请参阅此答案并注意它在旧版本的 Internet Explorer 中不起作用。如果你需要跨浏览器的兼容性,你不能通过 ajax 提交文件。

于 2013-09-11T14:41:16.127 回答
1

当您尝试推送数据数组中的值时,可能是您尝试错误。

而不是写 var data = $(this).serializeArray(); data.push({name: 'id', value: id});

试试这个

var 数据 = $(this).serializeArray(); data.push({id : $("#imgInp").val});

于 2013-09-11T10:39:01.377 回答