2011-07-25 20 views
1

我正在使用PHP/jQuery/MySQL爲我的朋友構建一個小型酒店網站。就像一個典型的CRUD應用程序一樣,它會有表格和報告。我有一個PHP框架來呈現表單並使用Ajax保存它們。現在我需要在保存數據項目時更新網頁上的元素。由於這是一個小項目,我會用簡單的方法在Ajax響應中發送HTML,並將響應嵌入到網頁中。但我決定使用JSON,以便將框架擴展到其他項目。截至目前以下是我的設計思路:需要建議爲Ajax驅動的webapp創建一個小的JSON結構

{ 
    'status':'', /*status like success/fail */ 
    'message':'', /*a status message or sting will be more helpful in case of failure */ 
    'data':'', /*arbitrary data*/ 
    'datatype':'' /*is it JSON or HTML or javascript(or some thing else?)*/ 
} 

基於響應jQuery將更新/管理網頁元素。我在這裏錯過了一些東西,還是在這個設計中完全錯了?

回答

2

我不會在那裏有狀態,而是會使用HTTP狀態代碼來報告狀態。在PHP中,如果出現問題,您可以使用header()傳回400。如果你再傳回200,如果一切正常。

然後在jQuery的你可以這樣做:

$.getJSON('http://someUrl/action.php').success(function() { 
    alert('success'); 
}).error(function() { 
    alert('fail'); 
}); 

對於你的JSON結構我會然後繼續一切就搞定了。

{ 
    'message': '', /*a status message or sting will be more helpful in case of failure */ 
    'datatype': '', /*is it JSON or HTML or javascript(or some thing else?)*/ 
    'data': {} /*arbitrary data*/ 
} 

我希望有幫助。

+0

狀態字段的意圖更多的是服務器端操作,如數據庫交互等。例如,一個操作可能會失敗,我需要通知用戶。 – Kumar

+0

如果您仍然需要一條消息,即使狀態不正常,然後堅持您的原始設計。我對HTTP狀態代碼的建議是由於有時在REST中使用,也允許在jQuery中使用.success和.error。 – hpoom

+0

我不是一個jQuery忍者,但知道它提供了一種方法來查看標題並採取相應的行動,所以我想我可以截取404/500標題並相應地採取行動,事實上,我正在做類似的事情來管理未經授權的Ajax調用 – Kumar