calling a block views by ajax
I post my answer for anyone who is facing this problem. After all it worked by some changes:

&lt;div onclick="return sort1()"&gt;newest comments&lt;/div&gt;

&lt;div onclick="return sort2()"&gt;oldest commenst&lt;/div&gt;

&lt;div onclick="return sort3()"&gt;most popular comments&lt;/div&gt;
&lt;div id="cm"&gt;
     &lt;div id='news'&gt;&lt;?php print views_embed_view('comments_views', 'block_3'); ?&gt;




and jQuery code is:

function sort1(){
var nid='&lt;?php echo $node-&gt;nid; ?&gt;';    
$.ajax({
    url: 'http://www.yoursitename.com/views/ajax',
    type: 'post',
    data: {
        view_name: 'comments_views', //view name
        view_display_id: 'block_3', //view display
        view_args: nid,   //view contexuall filter
    },
    dataType: 'json',
    success: function(response){
        //alert(response[1].data);
        $('#cm').html(response[1].data);
    }
});
    return false;   
}


for each of the sort functions above it must be exist.