我有最奇怪的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"))
的原因是否则我的其他实时表单验证脚本无效。
答案 0 :(得分:2)
我会改用load()
方法。这简单得多:
$('#content').load('reg #content > *', {
ajax_reg: true,
iRead: 1
});
reg #content > *
告诉.load()
加载reg
并将您的元素内容替换为#content > *
。
当您将数据传递给load
函数时,它会将GET转换为POST。