【问题标题】:facebook type status and comment using ajax, jquery in asp.net mvc3facebook在asp.net mvc3中使用ajax、jquery输入状态和评论
【发布时间】:2011-08-19 11:20:59
【问题描述】:

我正在 asp.net mvc3 中开发状态更新和评论应用程序,例如 Facebook 墙和评论。用户可以评论我的墙和 Facebook 等所有内容。

http://demos.99points.info/facebook_wallpost_system/

像上面的演示一样,我想创建我的应用程序。 如何使用 mvc3 和 ajax 做到这一点?

我已成功将用户状态更新到数据库,但无法获取同一用户的所有状态更新,我想使用局部视图在状态文本区域下方显示用户的所有状态。 如果用户写入一些状态并共享状态,则该时间状态消息保存在数据库中并再次异步反映到同一视图。

我怎样才能使用 ajax 做到这一点?

【问题讨论】:

  • 删除了 Facebook 标签,因为您不需要任何 Facebook 技术或 API 的帮助

标签: ajax asp.net-mvc-3 jquery asp.net-ajax


【解决方案1】:

我将笼统地回答这个问题,因为我对 asp.net 或 mvc3 没有任何了解。但是,在我看来,您正在寻找更多的架构方向。

您需要设置一个生成状态页面的端点,称为/status.asp。这将创建文本区域并从您的数据库中加载现有的状态消息。

然后创建第二个端点,例如/api/status.asp。这不是一个视图,而是应用程序中的一个 API,让用户可以创建(如果需要,还可以检索/修改/删除?)状态。

当用户在文本区域中按 Enter 键时,向 /api/status.asp 发出 XHR 请求并使用新状态。作为 POST 请求执行此操作很常见,但不是必需的(请阅读 REST - http://en.wikipedia.org/wiki/Representational_State_Transfer)。然后,此 API 应将新状态保存到您的数据库中,并将状态的 uid 与状态消息一起返回,可能为 JSON(或 XML 或 YAML,如果您愿意,这取决于您)。例如,在 JSON 中:

{
  status: [
      {
        uid: '1234567890987654321'
        msg: 'Hello World'
      }
  ]
}

(要发送 XHR 请求,最简单的方法是使用像 Dojo (http://dojotoolkit.org/reference-guide/dojo/xhr.html#dojo-xhr) 或 JQuery (http://api.jquery.com/jQuery.ajax/) 这样的 JS 库。)

当您的 XHR 请求返回时,检查状态是否为 200(一切正常),然后读取返回的数据。编写一些 Javascript 来创建一个新的 DOM 节点,将状态消息注入该 DOM 节点并将其添加到先前状态节点的底部。

奖励积分:

如果您希望 B 看到 A 的 /status.asp 页面,并在 A 发布新状态时自动更新该页面,您需要做更多的工作。首先,修改/api/status.asp 以在通过 HTTP GET 调用时返回最后 x(例如,10?)状态更新的列表。包括每个状态的 UID 以及状态文本。

重复调用您的/api/status.asp API*(可能带有您上次调用它的时间戳,并让您的 API 仅在该时间之后返回状态帖子),循环查看结果并检查该帖子是否已经包含在用户页面中(可能通过在每个 DOM 节点上都有一个与状态的 UID 匹配的 id)。如果没有,请将其添加到页面中。

*您有多种选择。例如,简单地设置一个 JS 超时(简单,但不是很有效),或者使用 Comet(例如 http://cometd.org/)或 WebSockets(http://websocket.org/)。我会先暂停一下,让它工作,然后确定是否需要更好的技术。

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多