2011-08-19 61 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/)。我會先超時,讓它工作,然後弄清楚是否需要更好的技術。