如何解决AJAX $ .post问题?

时间:2012-12-10 22:31:14

标签: jquery ajax

我有最奇怪的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关闭时显示): Expectations

并收到结果: Results

我使用AJAX的经验非常有限,但是,遵循所有教程以及我目前为止所知道的代码应该有效。

我尝试解决此问题使用的是filter()而不是find(),后者返回了相同的结果。在我看来,可能的解决方法可能是让脚本返回JSON对象并用它更新div#content,但是,我对修复更感兴趣应该的代码,而不是更改使用的方法。

非常感谢任何建议。

编辑if ($("#content #inp_iRead").is(":checked"))的原因是否则我的其他实时表单验证脚本无效。

1 个答案:

答案 0 :(得分:2)

我会改用load()方法。这简单得多:

$('#content').load('reg #content > *', {
    ajax_reg: true,
    iRead: 1
});

reg #content > *告诉.load()加载reg并将您的元素内容替换为#content > *

当您将数据传递给load函数时,它会将GET转换为POST。