2010-11-12 80 views
0

嗨,我只是想知道什麼是動態創建HTML的最佳做法。我可以用兩種方式通過PHP或jQuery ajax動態創建HTML?哪種方法更快或更好?

直接PHP

<div id='id-here'> 
    <?php 
     $user->id = $_GET['id']; 
     $user->displayUserInformation(); 
    ?> 
</div> 

jQuery的阿賈克斯(被稱爲在頁面加載JS腳本)

$.ajax({ 
    type: 'GET', 
    url: 'inc/user_information.php', 
    data: 'user_id=user_id', //assuming user_id value was already set. 
    success: function(html) 
    { 
     $('#user_information').empty().html(html); 
    } 
}); 

注:此代碼不存在,純粹是爲了展示我的意思是^^我也知道jQuery加載,但更喜歡使用jQuery ajax作爲複雜的東西。

謝謝!

回答

1

PHP方法當然更可靠,因爲它不需要在客戶端的JavaScript。對於在頁面生命週期中或者用戶會話期間不期望的信息,它也更有意義。我不認爲用戶的信息在瀏覽頁面時可能會發生很大的變化。但是,如果有一些數據可能會發生變化,比如發佈帖子數或其他內容,那麼可以使用PHP來設置初始值,然後使用ajax只有當值實際發生變化時才更新它。

+0

正是我必須記住!謝啦! – Woppi 2010-11-12 09:25:18

+0

如果javascript禁用,該怎麼辦?或jQuery的庫JavaScript不正確加載? – ajreal 2010-11-12 09:49:09

+0

不可以做人...你最終會在PHP中使用javascript。但是,您必須負責從第一次開始時檢測它並通知用戶。如果jquery庫不加載...有一種方法可以從你的服務器使用你的jQuery庫的副本。我並不打算使用PHP,完全沒有javascript ^^ – Woppi 2010-11-12 09:54:43

1

我不擔心哪個更快......差異可能會忽略不計。但請記住,有些用戶確實關閉了JavaScript ......如果您想要支持這些用戶,那麼在PHP中花費額外的努力是值得的。

我的規則是,如果可以在服務器上完成,就在那裏做。那麼你可以絕對確信所有用戶的結果。

+0

最終所有的請求都傳回服務器進行PHP處理 - ajax不是100%更快,但如果你沒有HTML返回數據,將會比返回完整HTML – ajreal 2010-11-12 09:51:08

+0

@ajreal你錯過了這一點。我所說的是,哪個更快並不重要。這對用戶來說不會有太大的改變。但是,如果用戶瀏覽器不支持JavaScript(或jQuery的AJAX),它將永遠不會傳回服務器進行PHP處理。 – 2010-11-12 10:07:54

+0

這是錯誤的假設,較少的HTML會給瀏覽器渲染所花費的時間較少,當然,還會提供更好的頁面排名 - http://code.google.com/speed/page-speed/docs/rendering.html – ajreal 2010-11-12 10:17:08

1

在你的例子中,如果你顯示這樣的用戶信息,方法1將不需要像例2那樣從服務器獲取其他數據(2個HTTP請求總數,1個原始網頁,1個Ajax),所以它是比較快的。通常,像這樣(在示例1中)在頁面內部生成靜態數據不同於向用戶提供內容的AJAX,並且僅使用AJAX更新新數據而不更新整個頁面的內容。

也許你的意思是:數據應該與原始網頁一起提供,還是應該留空,然後使用AJAX獲取數據以顯示它。通常最好是先提供數據,而不是讓用戶等待另一次到服務器去看數據。

1

ü得到它都是錯誤的,第一個是不是「動態創建的HTML」,用戶發送的請求,PHP進行處理,並返回HTML,你的瀏覽器使其

:第二個是你的瀏覽器已經加載HTML,並嘗試使用jquery來模擬第一個同一進程的另一個請求

+0

嗯......兩者都是分開的......我說......用兩種方式展示它。所以我爲兩個^^ – Woppi 2010-11-12 09:07:23

+0

創建了場景對不起,如果我的術語是錯誤的。我的觀點是,靜態 - 我們都看到同樣的事情,動態的 - 取決於用戶他/她看到的。所以它仍然是HTML ...用戶信息的HTML。 – Woppi 2010-11-12 09:10:30

+0

@Woppi--想想這樣,最終所有的請求都傳回服務器進行PHP處理,有什麼區別?它仍然會導致一個請求,jquery/ajax的美妙之處在於你必須使用冗長的HTML,節省你的血腥地獄,昂貴的網絡帶寬,增加更快的數據傳輸時間,然而,如果用戶選擇禁用JavaScript,100%有問題:) – ajreal 2010-11-12 09:47:35

0

沿着同樣的路線,這是在一個PHP文件更快,這是更多的搜索引擎優化和「最佳實踐」比實際的用戶體驗我使用的是wordpress,我在php文件中工作,大部分是php,但是我在文件中有四行html,都完全相同,我可以通過四行循環php,或複製並粘貼四行的HTML。我不希望改變代碼,所以php似乎沒有任何其他好處。

這裏是我的代碼: HTML版本(以及大部分)

<img src="<?php echo get_bloginfo('template_directory').'/images/bracket.png';?>" class="bracket" /> 
    <img src="<?php echo get_bloginfo('template_directory').'/images/bracket.png';?>" class="bracket" /> 
    <img src="<?php echo get_bloginfo('template_directory').'/images/bracket.png';?>" class="bracket" /> 
    <img src="<?php echo get_bloginfo('template_directory').'/images/bracket.png';?>" class="bracket" /> 

或PHP:

for($i=0;$i++;$i<4){ ?> //start loop, 4x 
    <img src="<?php echo get_bloginfo('template_directory').'/images/bracket.png';?>" /> 
    //Image path using php 
<?php } ?>  // end loop 

謝謝大家!

1

我相信從PHP加載靜態加載會更好,更可靠。然而,從AJAX加載將推動結果一次,而不是靜態加載,數據將被加載的部分...

相關問題