【问题标题】:Commenting System - Showing posted comment without page reload评论系统 - 在不重新加载页面的情况下显示已发布的评论
【发布时间】:2014-03-12 16:50:24
【问题描述】:

使用 PHP 开发评论系统。

一切正常,插入、验证以及 ajax 调用。

目前我正在对包含页面内容的容器执行 .load()。

但是,这会在尝试再次发布 cmets 时导致问题。 javascript 不起作用,与 cmets 链接的一些 javascript 函数也不起作用,诸如此类的小东西。

我应该如何处理 cmets,每次用户发布一个。

例如在 facebook 上,您发表评论,新评论就放在最后一条下方。

我能想到的唯一一件事就是使用 .append() 并将新评论附加到列表中。

在我的 PHP 页面中,我可以设置用户名、评论、用户个人资料图片等的 JSON 返回,然后将所有这些数据附加回来?

否则有没有更好的方法在成功调用 ajax 后简单地“重新加载”div 容器?

谢谢,我有什么工作......但我想以正确的方式学习东西。

克雷格。

【问题讨论】:

  • 您尝试运行的 javascript 是否由 .load() 加载?如果是这样,您的脚本引入的 javascript 未绑定到页面。

标签: javascript php jquery ajax comments


【解决方案1】:

您可以使用 $.ajax 加载新的 cmets 并使用 .append() 或 prepend() 将新的 cmets 插入容器中。如果您将调用包装在一个函数中,您可以一遍又一遍地调用该函数(例如每 2 秒一次)以检查新的 cmets。

如果我没记错的话 .load() 只会在浏览器刷新后元素准备好时执行。

哪些事情不起作用?请记住,在成功的 AJAX 调用之后必须绑定事件和数据。这意味着如果您在页面加载时将事件绑定到链接,它们显然仍然有效。但是如果你稍后插入一个链接,它就没有任何事件。

我通常会这样做:

$.ajax({
    url: 'ajax.php',
    data: { 'parameters': 'yada yada' },
    dataType: 'json',
    success: function( data ) {
        $('.links').unbind().click(function() { alert('hello!'); });
    }
});

.unbind() 的原因是您将在现有链接上绑定多个事件 - 而您不希望这样 ;-)

【讨论】:

    猜你喜欢
    • 2017-07-31
    • 2018-09-12
    • 2017-06-12
    • 1970-01-01
    • 2014-07-11
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多