このスクリプトを使用して画像ファイルをアップロードしています: 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
を追加するとエラーが修正されますが、問題が修正されるかどうかはわかりません。
私は2つのオプションを使用して同じ問題を修正しました
contentType: false
processData: false
実際、これら2つのコマンドを$ .ajax({})関数に追加しました
processData: false
オプションに$.ajax
を追加すると、この問題が修正されます。
私の経験:
var text = $('#myInputField');
var myObj = {title: 'Some title', content: text};
$.post(myUrl, myObj, callback);
問題は、$( '#myInputField');の最後に.val()を追加するのを忘れたことです。このアクションにより、何が間違っていたかを理解しようとして時間を無駄にします不正な呼び出しエラーの原因、$( '#myInputField')は別のそのシステムよりもファイルが誤ったコードを指摘しました。この答えが、同じ間違いの仲間が時間を失うことを避けるのに役立つことを願っています。