[解決済み】JQuery: 'Uncaught TypeError: ajaxリクエストで「Illegal invocation」が発生する - 複数の要素
質問
AとBの2つのselect要素があります。Aのselectedオプションが変わると、それに応じてBのオプションも更新されなければなりません。Aの各要素はBの多くの要素を意味し、それは一対多の関係です(Aは国家を含み、Bは与えられた国家に位置する都市を含むはずです)。
関数
do_ajax
は非同期リクエストを実行する必要があります。
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
B のオプションを更新するために、A の
onChange
イベントが発生します。以下は、onChange イベント (
A
が発生する。
function my_onchange(e) // "e" is element "A"
{
var sel_B = ... ; // get select element "B"
// I skipped some code here
// ...
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
do_ajax(city_sel, data, 'ajax_handler.php');
}
}
で読んだことがあります。
JQueryドキュメント
その
data
は配列(キーと値のペア)にすることができます。と入れるとエラーになります。
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
その代わり、データが文字列の場合はそのエラーは出ません。
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
しかし、私はサーバー側のPHPコードで、変数の"配列バージョン"を必要とします。
その
Uncaught TypeError: Illegal invocation
は "jquery-1.7.2.min.js" ファイル内にあり、全て圧縮されているので、どの部分のコードがエラーを発生させたのかが分かりませんでした。
データを連想配列で受け取るようにするために、コードで変更できる設定はありますか?
どのように解決するのですか?
とのお話のおかげで サルブラズ 解決策を見出すことができました。
問題は、私がHTML要素の値の代わりに渡していたことで、これは実際に私がやりたかったことです(実際、私のPHPコードでは、その値は私の
cities
テーブルを作成し、正しいエントリをフィルタリングします)。
だから、代わりに
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
となるはずです。
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex].value
};
注 Jason Kulatungaの 回答 JQueryのドキュメントを引用して、なぜHTML要素を渡すと問題が発生するのかを説明しています。
関連
-
[解決済み] 絶対位置が機能しない
-
[解決済み] will-change' や translateZ() ハックは 'transition: height' のパフォーマンスを向上させるか?
-
[解決済み] フッターの内容が重なっているのを修正するには?
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] jQuery AJAX送信フォーム
-
[解決済み] jQuery Ajax ファイルアップロード
-
[解決済み] jQuery の Ajax リクエストがすべて終了するまで待ちますか?
-
[解決済み】PHPによるjQuery Ajax POSTの例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ローカルの実行ファイルへのハイパーリンクを作成する方法は?
-
[解決済み] HTMLの#記号の文字実体は?
-
[解決済み] IE=edge,chrome=1というのは今でも有効なのでしょうか?
-
[解決済み] SRCとHREFの違い
-
[解決済み] Angular 2+のテンプレートで値を表す三項演算子
-
[解決済み] head」タグと「header」タグの本当の違いは何ですか?[重複】について]
-
[解決済み] フッターの内容が重なっているのを修正するには?
-
[解決済み] デフォルトで空白を選択
-
[解決済み] Add a scrollbar to a <textarea> [duplicate]
-
[解決済み] アトムでキーバインドリゾルバーのポップアップを消すにはどうしたらいいですか?