ajax()を実行時に「Illegal invocation」が出たときの対処

作成日:2018-03-12, 更新日:2018-03-12

基本

ajax()を実行すると下記のようなエラーが出てきた。

Uncaught TypeError: Illegal invocation

※「Illegal invocation」は「不正な呼び出し」。

調べると「FormData()」を使うと出てくるそうだ。
※他にも予約語を使うときも出てくるそうだ。

エラーと対処

「processData: false」が無いとダメだそう。

▼エラーになったソース

~ 略 ~
var formAry = $(this).parents('form').serializeArray();
var fd = new FormData();
$.each(formAry, function(i, field){
   fd.append(field['name'], field['value']);
});

$.ajax({
   url: url,
   type: 'post',
   data: fd
以下、略

▼修正したソース

~ 略 ~
var formAry = $(this).parents('form').serializeArray();
var fd = new FormData();
$.each(formAry, function(i, field){
   fd.append(field['name'], field['value']);
});

$.ajax({
   url: url,
   type: 'post',
   processData: false,
   data: fd
以下、略