You are querying the main query, since you didn’t set a custom one, with new WP Query.
Hence, yes there are posts, just not the ones you think.
Try this:
<?php
$args = array(
'category__in'=> array( 23, 31 )
);
$loop = new WP_Query( $args );
// Start the loop for your custom query
if($loop->have_posts() ) : ?>
<section id="alert-bar" class="clearfix">
<div class="container">
<div class="row">
<div class="col-xs-12">
<?php while ($loop->have_posts() ) : $loop->the_post();
//ADVANCED CUSTOM FIELDS VARIABLES
$event_thumb = get_field( 'event_thumb' );
$alert_excerpt = get_field( 'alert_excerpt' );
<article class="row">
<div class="col-xs-3 col-md-offset-1 col-md-2 alert-image-wrapper">
<a href="https://wordpress.stackexchange.com/questions/237536/<?php the_permalink(); ?>">
<img src="<?php echo $event_thumb['url']; ?>" alt="<?php the_title(); ?>">
</a>
</div> <!-- .col-xs-3 .col-md-offset-1 .col-md-2 .alert-image-wrapper -->
<div class="col-xs-9 alert-text-wrapper">
<a href="https://wordpress.stackexchange.com/questions/237536/<?php the_permalink(); ?>">
<h4><?php the_title(); ?></h4>
<p><small><?php echo $alert_excerpt; ?></small></p>
</a>
</div> <!-- .col-xs-9 .alert-text-wrapper -->
</article>
<?php endwhile; ?>
</div> <!-- .col-xs-12 -->
</div> <!-- .row -->
</div> <!-- .container -->
</section> <!-- #alert-bar -->
<?php endif; wp_reset_query();
?>