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