AJAX - JSON传递与PHP返回生成的HTML

时间:2013-01-02 16:17:36

标签: php javascript html ajax

我现在有这样的代码:

<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 + "." );
        }
    });       
}      

如果我有一个AJAX所谓的用PHP编写的页面,只为我生成了 LI 部分,我可以节省很多关于我需要处理的数量的小问题。 string + =''bit。

事情是......哪个更好?

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

我不关心我使用哪种,只要我知道它至少是最佳或最佳实践方式。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

此处不确定“服务器端是否更快”的论点。这通常是正确的,但在这种情况下差异是......

客户端呈现: 通过ajax获取JSON 在javascript中构建html字符串 将HTML字符串注入doc正文,导致渲染(=处理的大部分)

服务器端预渲染(即服务器传递到HTML): 通过ajax获取HTML(因此流量更多) 将HTML字符串注入doc正文,导致渲染(=处理的大部分)

您优化的唯一部分是在jacvascript中构建HTML字符串,与大量工作相比,处理时间是微不足道的:HTML注入和后续渲染。

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

银行用ackup服务做这样的事情:有时候他们有平台上运行的服务,两个或多个故障转移实例,有时一个其他服务做相同的事情,但写在一个完全不同的平台上。重量级的东西,通常不需要日常的网络应用程序,但它强调从数据处理中分割渲染处理的价值。