我有最奇怪的 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"))
是否则我的其他实时表单验证脚本不起作用。