2011-08-19 66 views
0

我正在处理状态更新和评论应用程序在asp.net mvc3像Facebook墙和评论。用户可以评论我的墙和Facebook等所有内容。Facebook的状态和评论使用Ajax,在asp.net中的jquery mvc3

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

像上面的演示,我想创建我的应用程序。 我怎么能使用mvc3和ajax?

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

我该如何使用ajax?

+0

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

回答

0

我打算用广义的术语来回答这个问题,因为我没有任何关于asp.net或mvc3的知识。但是,在我看来,你正在寻找更多的架构方向。

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

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

当用户点击输入textarea时,用新状态发出一个XHR请求到/api/status.asp。这是通常的做法,但不是必须的,可以将其作为POST请求(请参阅REST - http://en.wikipedia.org/wiki/Representational_State_Transfer)。然后,此API应将新状态保存到数据库,并将状态的uid与状态消息一起返回,可能为JSON(如果您愿意,也可以是XML或YAML,由您决定)。例如,在JSON:

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

(要发送XHR请求,这是最容易使用的一个JS库像道场(http://dojotoolkit.org/reference-guide/dojo/xhr.html#dojo-xhr)或JQuery的(http://api.jquery.com/jQuery.ajax/))

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

积分:

如果你想某乙被看的人A的/status.asp页面,该页面自动更新,当人一帖一个新的状态,你需要做一些更多的工作。首先,修改/api/status.asp以在通过HTTP GET调用时返回最后一个x(比如10?)状态更新的列表。包括每个状态的UID以及状态文本。

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

*您有多个选项可供选择。例如,简单地设置JS超时(容易,但不是非常有效),或者使用Comet(例如http://cometd.org/)或WebSockets(http://websocket.org/)。我会先超时,让它工作,然后弄清楚是否需要更好的技术。