Post请求图像时非法调用

时间:2016-05-14 10:22:52

标签: jquery ajax http-post

我正在尝试使用图片发布请求,但是当我将其添加为参数Uncaught TypeError: Illegal invocation时,我会不断收到错误消息。我已经尝试了这个和.serialize(),但似乎没有任何效果。

  var description = $('#description').val();
  var title = $('#title').val();

  var fileInput = $("#image")[0];

  var file = fileInput.files[0];
  var image = new FormData();
  image.append('image', file);

  $.ajax({
    type: 'POST',
    url: 'insert.php',
    data: {
        desc: description,
        title: title,
        image:image,
        longitude: currentMarker.lng(),
        longitude: currentMarker.lat(),
           },
          success: function (answer) {

          }
      })

1 个答案:

答案 0 :(得分:0)

您不能将FormData放入正在发送的参数之一,它必须是整个data值。所以它应该是:

var image = new FormData();
image.append('image', file);
image.append('desc', description);
image.append('title', title);
image.append('longitude', currentMarker.lng());
image.append('latitude', currentMarker.lat());
$.ajax({
    type: 'POST',
    url: 'insert.php',
    data: image,
    processData: false,
    contentType: false,
    success: function(answer) {
        ...
    }
});

发送FormData时,您需要告诉jQuery不要尝试将数据参数从对象转换为带有processData: false的URL编码字符串。