通过PHP或jQuery ajax动态创建HTML?哪种方法更快更好?

时间:2010-11-12 08:57:34

标签: php jquery

您好我只想知道动态创建html的最佳做法是什么。我可以用两种方式做到这一点

直接PHP

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

jQuery ajax(在页面加载时调用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来复杂的东西。

谢谢!

6 个答案:

答案 0 :(得分:1)

我不担心哪个更快......差异可能可以忽略不计。但请记住,有些用户确实关闭了JavaScript ...如果你想支持这些用户,那么在PHP中花费额外的精力是值得的。

我的规则是如果可以在服务器上完成,那就去做吧。然后,您可以绝对确定所有用户的结果。

答案 1 :(得分:1)

PHP方法肯定更可靠,因为它不需要客户端中的javascript。对于在页面生命周期中或预期用户会话期间不期望的信息,它也更有意义。我不认为在页面视图期间用户的信息可能会发生这么大的变化。

但是,如果有一些数据需要更改,比如一个帖子计数或其他什么,那么使用PHP设置初始值,然后使用ajax仅在值实际更改时更新它。

答案 2 :(得分:1)

在您的示例中,如果您显示这样的用户信息,方法1将不需要从服务器获取另一个数据,如示例2所示(总共2个HTTP请求,原始网页为1,ajax为1),因此它是更快。

通常,在这样的页面内生成静态数据(在示例1中)与AJAX不同,后者向用户提供内容,并且仅使用AJAX使用新数据更新而不更新整个页面的内容。

也许你的意思是:数据应该与原始网页一起提供,还是应该留空,然后使用AJAX获取数据来显示它。通常最好先提供数据,而不是让用户等待另一次访问服务器以查看数据。

答案 3 :(得分:1)

你弄错了,第一个不是'动态创建的html',用户发送了一个请求,PHP处理它,并返回HTML,你的浏览器呈现它

第二个是您的浏览器已加载HTML,并且您尝试使用jquery来模拟第一个相同进程的另一个请求

答案 4 :(得分:1)

我相信从PHP加载静态加载会更好,更可靠。但是,从AJAX加载会将结果推送一次,而不是静态加载,数据将按部分加载......

答案 5 :(得分:0)

沿着相同的路线,这在php文件中更快。对于SEO和“最佳实践”而言,这比实际用户体验更多。我正在使用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

感谢所有人!