1. ホーム
  2. javascript

jQuery ajaxエラー Illegal invocation 解決策

2022-02-07 22:04:56
<パス

梅は嫉妬し、菊は恥ずかしがり、絵の付録は中秋の冠を開く。

前書き

本日、ajaxを使用して変更を送信する際に、以下のエラーが発生しました。

以前にもこのような使い方をしたことがありますが、このような問題はありませんでしたよ。

解決方法

検索してみると、この問題に遭遇した他の学生の解決策は、ajaxのパラメータを processData:false これを試したところ、確かにエラーは出なくなりましたが、以下のようにパラメータがオブジェクトになってしまい、バックエンドコントローラに自動的にラップすることができません。

について processData の説明

processData
Type: Boolean

Default: true. By default, data passed in via the data option that is an object (technically speaking, as long as it is not a string) is processed into a query string to match the default content type "application/x-www-form-urlencoded". Set to false if you want to send DOM tree information or other information you don't want converted.


明らかに、この解決策は私のような問題には使えません。目を凝らして調べた結果、最終的に私のコミットではパラメータのひとつが未定義であることが判明しました。

//Get the data
	var a= $("#editWindow #a").val();
	var b= $("#editWindow #b").val();
	//Update data
    $.ajax({
        type: "POST",
        url: 'controller/abc/update.json',
        data:{
        	id:id, //this id is not defined in the above get data and has no value, that's why the Illegal invocation problem occurred
			a:a,
			b:b
		},
        success: function (data) {
			if (data.success) {
                $.messager.alert('prompt', "Modified successfully! ", 'info');
			}
        }
    });


つまり、最初にIDの値を取得すればいいわけです。

var id= $("#editWindow #id").val();


問題は解決しました。