AJAX——JSON传递vs返回PHP生成的HTML


AJAX - JSON passing vs returning generated HTML by PHP

我现在有这样的代码:

<li onclick = "                                        
    function CBAppData( callerObj, data )
    {
        var string = '';
        for( a in data )
        {            
            debug.push( data[a] );
            if( data[a].__attributes.config.name )
            {
                string += '<li>' + data[a].__attributes.config.name + '</li>';
            }
            else
            {
                alert( 'Error with json index ' + a );
            }     
        } 
        $( callerObj ).children( '.returnData' ).html( string );    
    }   
    DoAjax( 
        this,
        'get_for_url', 
        '<?php echo Site::$url; ?>Process.php', 
        {
            'space_id': '<?php echo $space->__attributes[ "space_id" ]; ?>'
        },
        CBAppData
    )
">
    <?php echo $space->__attributes[ "name" ]; ?>
    <ul class = "returnData"></ul>    
</li>

DoAjax就是这样:

function DoAjax( callerObj,  _request, _url, _additionalData, callback )
{
    $.ajax({
        type: "POST",
        url: _url,
        data: { 
            request: _request,
            additionalData: _additionalData 
        },
        success: function( data )
        {   
            callback( callerObj, jQuery.parseJSON( data ) );   
        },
        error: function( a, b, c )
        {
            alert( "error: " + a + ", " + b + ", " + c + "." );
        }
    });       
}      

如果我有一个用PHP编写的AJAX调用的页面,它只是为我生成LI部分,我可以节省大量的麻烦,我必须处理字符串+= "位。

的事情是…哪个更好?

使用客户端公司渲染html,还是使用服务器渲染html ?

我不在乎我用哪一种,只要我知道它至少是最好的或最佳实践的方法。

这个查询来自于需要使这个应用程序超级未来证明。

从历史上看,服务器端处理速度更快。话虽如此,对于您的应用程序来说,这是非常小的东西,可能不会有太大的区别。问问你自己哪种方法更容易维护,这就是你的答案。

这里不确定"服务器端更快"的论点。一般来说,这是正确的,但在这种情况下,不同之处在于……

客户端渲染:通过ajax获取JSON在javascript中构建HTML字符串将HTML字符串注入文档主体,导致渲染(=大量处理)

服务器端预渲染(即server delivery ready to go HTML):通过ajax获取HTML(因此会增加一些流量)将HTML字符串注入文档主体,导致渲染(=大量处理)

唯一需要优化的部分是在javascript中构建HTML字符串,与大部分工作相比,这是微不足道的处理时间:HTML注入和随后的呈现。

我喜欢这种客户端呈现方法,特别是如果将来服务器平台可能会发生变化的话。

银行对备份服务就是这样做的:有时他们有一个服务运行在一个平台上,两个或更多的实例用于故障转移,有时另一个服务做同样的事情,但写在一个完全不同的平台上。重量级的东西,通常不需要日常的web应用程序,但它强调了将渲染处理与数据处理分开的价值。