1

我有最奇怪的 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#contentdiv#content返回的更新我的(在这种情况下它只包含字符串foo :))。

以下是我的期望(在关闭 JavaScript 时出现): 期望

并收到结果: 结果

我在 AJAX 方面的经验非常有限,但是,按照所有教程以及到目前为止我所知道的,这段代码应该可以工作。

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

任何建议都受到高度赞赏。

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

4

1 回答 1

2

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

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

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

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

于 2012-12-10T22:36:36.827 回答