2013-04-23 48 views
1

我正在開發一個使用CodeIgniter框架的網站,並希望集成一些AJAX調用(使用jQuery)。從JSON或純HTML加載數據?

該網站是關於賽馬小費(類似於小費小費哪些用戶可以通過點擊按鈕提交小費)。我喜歡避免用戶在提交小費時重新加載頁面(如果沒有AJAX,他們將不得不重新加載頁面)。

基本上我已經記:(隨時糾正我或者給我更好的建議,如果你心裏有)

  1. 用戶提交他們的小費(假設爲賽#1)
  2. 表單提交給服務器端(PHP),它檢查一切。如果沒關係,它會返回一個「OK」標誌。
  3. 如果接收到「OK」標誌,它
  4. 服務器收到賽#請求1數據
  5. 使用jQuery服務器請求的比賽#1的數據,它將填充賽#1數據到瀏覽器。

我的問題是:是否更好地採取JSON數據並使用JavaScript填充到瀏覽器中?還是請求服務器端(在這種情況下CodeIgniter)生成特定的HTML,然後使用AJAX獲取並使用javascript/jQuery填充它(請參閱:$("div#r1").html(fetched_data))?

我知道JSON數據將是輕量級的,但是我將不得不使用JavaScript來填充數據,根據需求可能更容易或更困難。

您對此問題有什麼看法?

+0

JSON,因爲類似於MVC和CodeIgniter,您應該從顯示中分離邏輯。明確地爲您的JS定義不同的部分,如ajax請求以及它的顯示方式,將使維護和測試變得更加容易。如果您想更好地瞭解其中的一些約定,請查看JS庫,如Backbone,Underscore等。它們提倡「MVC」JS風格。 – 2013-04-23 03:45:04

+1

爲什麼在步驟3中提出額外請求?可以在第2步中隨標誌一起返回數據。也可以在json中嵌入html ....在您的問題中不提示另一個選項。 – charlietfl 2013-04-23 10:06:03

回答

0

與json一起去,json更好。

在php中發送html不是一個好的選擇。從json_encode()返回你的數據。

編輯:

例如,你有一個這樣的數組;

<?php 
    $data = array(
    'races'=>array('race1'=>array('race','details','here'),'race2'), 
    'horses' => array('horse1','horse2') 
); 
?> 

所以你必須爲每個不同的數據設置html代碼。但是,如果您使用json發送這些數據,則可以從視圖或包含的JavaScript中解析該數據,並將數組中的每個項目設置爲對象並直接在任意位置使用。

json的例子;

//Ajax proccess here 
success:function(response){ 
    if(response.races){ 
    $.each(response.races, function(i,item)){ 
     var $race = $('<div></div>'); 
     $race.addClass('race'); 
     $race.html('<h3>'+item.racename+'<h3>'); 
     $race.appendTo('#races'); 
    } 
    } 
} 

正如你所看到的,你完全控制了你的json對象。訪問元素和創建新元素總是更容易處理。如果你沒有使用json對象;您將始終使用返回的HTML刷新所有數據。這就像是因爲忘記了一個「,」而從零開始編寫所有頁面。

技術: PHP是服務器端,JavaScript是客戶端。所以你不需要在你的服務器上做所有的事情,這不會是一個聰明的舉動。

技術例如:

<?php 
$data = getDataFromDB(); 
if(count($data) > 0) //Proccess: 1 
{ 
    $html = ''; //Proccess 2 
    foreach($data as $race) //Process 3 
    { 
    $html .= '<div class="race"><h3>'.$race->name.'</h3></div>'; 
    } 

    if($html != '') //Proccess 4 
    { 
    echo $html; 
    } 
} 
?> 

但是如果你只使用json_encode這將是唯一一個proccess ...

這就是爲什麼最好用AJAX JSON對象的工作。

+0

你可以給你一些答案的理由嗎?我想知道爲什麼要使用JSON。 – 2013-04-23 01:43:53

+1

這並不真正回答原來的問題。原來的海報意識到有兩種做事方式,很明顯需要人們對這個問題的看法。他沒有具體說答案必須包含「爲什麼」,但強烈暗示。 – Joseph 2013-04-23 01:46:39

+0

首先,不要在php中使用html。其次,處理json數據比使用php的純html更容易。我正在用示例更新我的答案。 – 2013-04-23 01:49:46