" Invalid argument supplied for foreach()" . means that the $parents variable is not an array so you can\'t loop through it. You should wrap the foreach loop in an if check that verifies that $parents is something valid.
<?php
$term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
$parents = get_the_terms($term->parent, get_query_var(\'taxonomy\') );
if( $parents && ! is_wp_error($parents) ) :
echo "<div class=\'product-cat\'>";
echo "In"." "." ";
foreach( $parents as $parent ) {
echo \'<a href="\'.get_term_link($parent).\'">\'.$parent->name.\'</a>\';
}
echo "</div>";
endif;
?>
Though secondarily.... get_query_var(\'term\') and get_query_var(\'taxonomy\') are not returning anything on the search page because those query vars don\'t pertain to the search query.