Ajax callback return 500 Internal Server Error
Change the callback into this:

function get_channel_program($channel_id){
  if (!is_numeric($channel_id)) :
    drupal_not_found();
  else :
    drupal_json_output($channel_id);
  endif;
}


Change the jQuery into this:

$('.channel-tv-tabs .tab .tabset .single-prog', context).click(function () {
     ...
     $.get('/ajax/channel/'+channel_id+'/get-program', function(data) {
     alert("got "+ data);
   });
});


This uses HTTP GET verb. 


  According to the design of the HTTP specification, GET (along with
  HEAD) requests are used only to read data and not change it


instead of POST


  The POST verb is most-often utilized to create new resources.