jQueryのajaxで Illegal invocation が出た時の対策。

Illegal invocation エラーがたまに出ます。

Uncaught TypeError: Illegal invocation  

これは基本的には予約語を使った場合に出るそうなのですが
そんな予約語を使った覚えはないのに、エラーが出てきた時の
対策がなかなか見つからなかったので、こちらに記述しておきます。

対策

対策は簡単です。
ajax の option に processData: falseをつける。
ファイルを送信したりするときに formdata を使って送信するのですが、
以下の様に書くとエラーが出ます。

$.ajax({
     url: endpoint_url,
     type: "POST",
     headers: {
        "Authorization": auth_key
     },
     data: formdata
})

なので、processData: falseをつけてあげるとエラーが出なくなります。
ファイル送信においては contentType: falseをつけないとサーバーサイドでエラーになります。

$.ajax({
     url: endpoint_url,
     type: "POST",
     headers: {
        "Authorization": auth_key
     },
     data: formdata,
     processData: false,
     contentType: false
})

試してみてください。