이 스크립트를 사용하여 이미지 파일을 업로드하고 있습니다. 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는 data
속성을 처리하고 값을 문자열로 변환합니다.
추가processData: false
옵션 객체하면 오류를 해결하지만, 나는 확실히 그것으로 문제가 해결되는 경우가 아니에요.
답변
나는 두 가지 옵션을 사용하여 같은 문제를 해결했습니다.
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}