私はこれまでで最も奇妙なAJAXバグ(または経験不足の深刻なケース)を抱えています。$ _POSTリクエストの後、の内容のみをdiv#content
更新する必要がありますが、他には何も更新されませんが、ページレイアウト全体が壊れているようです。
私のレイアウトは単純です:
<header>..</header><nav>..</nav>
div#left-sidebar
div#content
--- _div#right-sidebar
<footer>..</footer>
使用されるJavascriptは次のとおりです。
$("#terms").submit(function(event) {
if ($("#content #inp_iRead").is(":checked")) {
event.preventDefault();
$("#content img[alt=loading]").show();
$("#content #terms").hide();
$.post("reg", {
ajax_reg: true,
iRead: 1
},
function(data) {
$("#content").html(data).find("#content");
},
"html");
}
});
#terms
フォームIDであり#inp_iRead
、チェックボックスです。私が欲しいのはdiv#content
、div#content
返されたもので更新することです(この場合は文字列のみが含まれていますfoo :)
)。
以下は私の期待です(JavaScriptをオフにした場合に表示されます):
そして受け取った結果:
私のAJAXの経験は非常に限られていますが、すべてのチュートリアルとこれまでのところ、このコードが機能するはずです。
これを修正しようとしfilter()
たのは、の代わりにを使用しfind()
て、同じ結果を返しました。私の意見では、考えられる回避策は、スクリプトにJSONオブジェクトを返させて更新することですが、使用するメソッドを変更するのではなく、機能するはずのコードを修正することdiv#content
に関心があります。
どんな提案でも大歓迎です。
編集:その理由if ($("#content #inp_iRead").is(":checked"))
は、そうでなければ私の他のライブフォーム検証スクリプトが機能しないためです。