在asp.net mvc3中使用ajax,jquery的facebook类型状态和注释

时间:2011-08-19 11:21:00

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

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

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

如上面的演示,我想创建我的应用程序。 我怎么能用mvc3和ajax做到这一点?

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

我怎么能用ajax做到这一点?

1 个答案:

答案 0 :(得分:0)

我将广泛回答这个问题,因为我对asp.net或mvc3一无所知。但是,在我看来,你正在寻找更多的建筑方向。

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

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

当用户点击textarea中的输入时,使用新状态向/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/)。我先去暂停,让它工作,然后弄清楚是否需要更好的技术。