[jquery] Jquery 및 HTML FormData가 “Uncaught TypeError : Illegal invocation”을 반환합니다.

이 스크립트를 사용하여 이미지 파일을 업로드하고 있습니다. 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 오류

도와주세요?



답변

jQuery는 data속성을 처리하고 값을 문자열로 변환합니다.

추가processData: false 옵션 객체하면 오류를 해결하지만, 나는 확실히 그것으로 문제가 해결되는 경우가 아니에요.

데모 : http://jsfiddle.net/eHmSr/1/


답변

나는 두 가지 옵션을 사용하여 같은 문제를 해결했습니다.

contentType: false
processData: false

실제로 $ .ajax ({}) 함수에이 두 명령을 추가했습니다.


답변

추가 processData: false받는 $.ajax옵션을하면이 문제가 해결됩니다.


답변

내 경험:

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

문제는 $ ( ‘# myInputField’); 끝에 .val ()을 추가하는 것을 잊었다는 것입니다. 이 작업은 $ ( ‘# myInputField’)가 해당 시스템이 잘못된 코드를 지적한 것과 다른 파일에 있었기 때문에 무엇이 잘못되었는지 파악하는 데 시간을 낭비하게 하여 Illegal Invocation Error를 발생시킵니다 . 이 답변이 같은 실수를 저지른 동료들이 시간을 낭비하지 않도록 도와주기를 바랍니다.


답변

제 경우에는 매개 변수 목록에 잘못된 형식이 잘못되어있었습니다. 따라서 매개 변수의 형식이 올바른지 확인하십시오. 예를 들어 올바른 매개 변수 형식

data: {'reporter': reporter,'partner': partner,'product': product}


답변