86

このスクリプトを使用して画像ファイルをアップロードしています:http://jsfiddle.net/eHmSr/

$('.uploader input:file').on('change', function() {
  $this = $(this);

  $('.alert').remove();

  $.each($this[0].files, function(key, file) {
    $('.files').append('<li>' + file.name + '</li>');

    data = new FormData();
    data.append(file.name, file);

    $.ajax({
      url: $('.uploader').attr('action'),
      type: 'POST',
      dataType: 'json',
      data: data
    });
  });
});

しかし、アップロードボタンをクリックすると、JavaScriptコンソールは次のエラーを返します。

Uncaught TypeError: Illegal invocation 

jQueryエラー

手伝って頂けますか?

4

5 に答える 5

175

jQueryはdata属性を処理し、値を文字列に変換します。

オプションオブジェクトに追加processData: falseするとエラーが修正されますが、問題が修正されるかどうかはわかりません。

デモ: http: //jsfiddle.net/eHmSr/1/

于 2012-10-06T01:57:22.637 に答える
22

私は同じ問題を抱えていました

2つのオプションを使用して修正しました

contentType: false
processData: false

実際、これら2つのコマンドを$ .ajax({})関数に追加しました

于 2018-03-31T10:54:38.283 に答える
8

オプションに追加processData: falseすると、$.ajaxこの問題が修正されます。

于 2015-07-08T05:33:50.007 に答える
3

私の経験:

  var text = $('#myInputField');  
  var myObj = {title: 'Some title', content: text};  
  $.post(myUrl, myObj, callback);

問題は、$('#myInputField');の最後に.val()を追加するのを忘れたことです。$('#myInputField')がそのシステムが誤ったコードを指摘したのとは異なるファイルにあったため、このアクションは何が間違っているのかを理解しようとして時間を無駄にし、不正な呼び出しエラーを引き起こします。この答えが、同じ過ちを犯した仲間が時間を失うことを避けるのに役立つことを願っています。

于 2016-04-21T00:05:06.190 に答える
-2

私の場合、パラメータのリストに誤りがあり、整形式ではありませんでした。したがって、パラメータが適切に形成されていることを確認してください。たとえば、パラメータの正しい形式

data: {'reporter': reporter,'partner': partner,'product': product}
于 2017-02-13T09:24:17.083 に答える