2010-11-13 122 views
7

當從ajax返回時, 我應該返回爲json編碼,並使用jquery.parseJSON 並使用document.createElement並在剛剛創建的Element內追加數據。jquery ajax - 返回json或純html更好

或者最好是返回html文本?

例如,

<div id="contentcontainer"></div> 

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John", 
    success: function(msg){ 
    msgObj = jquery.parseJSON(msg); 
    var div = document.createElement('div'); 
    div.style.color="red"; 
    $(div).append(msgObj.name); 
    $('#contentcontainer').append(div); 
    } 
}); 

//some.php 
if($_POST['name']){ 
    echo json_encode(array('name'=>$_POST['name'])); 
} 

,或者我應該做這樣嗎?

<div id="contentcontainer"></div> 

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John", 
    success: function(msg){ 
    $('#contentcontainer').append(msg); 
    } 
}); 

//some.php 
if($_POST['name']){ 
    echo '<div style="color:red">'.$_POST['name'].'</div>'; 
} 

Ammended ......對不起,我的語法錯誤

當然,這只是一個例子,真正的情況下,將有大量的數據,可能會以HTML表格形式。

當然,這只是一個例子,真實情況下它會有很多數據。

如果它有很多數據,那麼我需要寫很多document.createElement()。 它消耗的時間像這樣寫 document.createElement('table'); document.createElement('tr');

,而不是(返回HTML和剛剛在容器附加)

對於我來說,我認爲第二格式(返程HTML)比較容易。

但不知道性能明智,哪個更好?

請指教。

+0

JSON。因爲它會減少您的帶寬並將您的數據與演示文稿分開。另外,硬編碼樣式是一個壞主意。 – 2010-11-13 05:47:51

+0

我不認爲它會減少帶寬。uniqsign說:「當然,這僅僅是一個例子,實際情況是它會有很多數據,可能是html表格格式。」,你建議將HTML封裝到JSON中,這實際上會佔用更多的帶寬。 – 2010-11-13 05:52:05

+0

對不起,我的錯誤,我並不打算將HTML封裝爲JSON, 我的意思是說如果它有很多數據,可能對我來說寫起來更容易

而不是文檔.createELement。 – cww 2010-11-13 07:10:52

回答

5

Sébastien和Zain都有有效的分數。這取決於你正在談論的性能種類

如果您想減少服務器的帶寬,那麼您應該返回JSON並使用客戶端JavaScript創建您的顯示。

但是,如果您的數據集很大,在大多數創建您的顯示客戶端的計算機上可能會滯後瀏覽器並導致UI無響應。如果這對你很重要,那麼你可以考慮從服務器返回HTML。

0

是的,如果您沒有操縱/解釋來處理AJAX調用的結果,那麼您應該返回HTML。

+0

也許這個線程中的每個人都忘記了**最初的問題:哪個狀態:但不知道性能明智,哪個更好? – 2010-11-13 06:00:56

+0

性能明智,使用'json'更好。 – 2010-11-13 06:02:14

+0

我沒有看到它那樣,當你在JSON中編碼()+ DECODE()時,在服務器上和客戶端上有額外的處理時間。在服務器上創建html的 – 2010-11-13 06:05:41

0

不,我不建議從php頁面返回html。只返回json數據並在客戶端解析並顯示在UI上。因爲html總是比json重。所以如果你使用json,它會節省你的bandwidth

如果你想要一個例子,只要去看看twitter在做什麼,它們只返回json然後在客戶端操縱json。

+0

是的,json將是獲取數據的最佳選擇。 – kobe 2010-11-13 05:50:20

+0

@uniq的優點是可以維護對象層次結構。 – kobe 2010-11-13 05:51:01

+0

我認爲主要問題是關於性能。返回批量數據,封裝JSON並在客戶端處理它們會在這種特殊情況下增加更多的處理時間。 – 2010-11-13 06:03:18