Refreshing a block using AJAX
depending on how your module is setting up the block, you could look into Block Refresh:


  Block Refresh allows an administrator to configure a block to refresh
  it's content via 3 different methods: automatically via a timer (eg
  every 30 seconds) , manually via a 'refresh' link, and once on page
  load.
  
  Block Refresh uses jQuery/AJAX so the refresh happens
  "behind-the-scenes".
  
  Block refresh can be handy to serve fresh content in certain blocks on
  otherwise cached pages. You can opt to bypass drupal's cache for the
  refresh callbacks for each block.


Edit

I just ran into this exact problem and developed a simple little approach that works nicely:


using Block Refresh


set up each of the blocks you want to refresh as manual - this would normally cause a link to appear in each block allowing a click refresh

create some css to hide the ugly links:

.block-refresh-button
{
    display:none;
}

then add a simple jQuery click to force block refresh to do all the work for you - this can be modified appropriately as necessary:

jQuery(".flag-wrapper").click(function()
{
    jQuery(".block-refresh-button").each(function()
    {
        jQuery(this).click();
    });
});



I found this will refresh ALL blocks on the page set up with block refresh, including Views.