このような問題のほとんどは、AJAXの非同期性が原因です。要求と応答の AJAX ラウンド トリップが完了しない限り、 AJAX 経由でロードするもの ( .post()
、、、、 ) はすべて「存在」しません。.load()
.ajax()
.get()
AJAX でロードしたもの (HTML ビット、JSON 応答など)を、AJAX 要求の成功時に呼び出されるコールバック関数で必ず "使用" してください。
たとえば、私のページajax.php
がこの文字列を返すとしましょう: <div id='ajaxdiv'>hello!</div>
、この (HTML) 文字列を にロードしたいとします#mydiv
:
$("#mydiv").load("ajax.php");
console.log($("#mydiv #ajaxdiv")); <- undefined
リクエストの完了に関係なくコードが続行されるため、機能しません。その代わり:
$("#mydiv").load("ajax.php", function () { console.log($("#mydiv #ajaxdiv"));});
JQuery は、リクエストが完了した場合にのみコールバック関数を使用するため、機能します。{class: test}
( URL とコールバック関数の間に配置するだけで、 のようなパラメーターを追加することもできます)。
編集: $POST ではなく $_POST を使用してください。