si questo è vero però:
Codice PHP:
    public function getDtlArticolo() {
        
$this->db->select('*');
        
$this->db->from('cr_articoli');
        
$query $this->db->get();
        if (
$query->num_rows 0) {
            
$output_string "";
            
$output_string .= "<table border='1'>\n";
            echo 
'SI VEDE';
            foreach (
$query->result() as $row) {
                echo 
'NON SI VEDE';
                
$output_string .= "<tr>\n";
                
$output_string .= "<th>{$row->articolo_codice}</th>\n";
                
$output_string .= "</tr>\n";
            }
            
$output_string .= "</table>\n";
        } else {
            
$output_string "There are no results";
        }
        echo 
json_encode($output_string);
    } 
si sono due echo.
il primo si vede e questo vuol dire il numero di rghe è maggiore di zero.
il secondo, subito dentro al foreach, non si vede.
quindi in generale la tua correzione è giusta, ma in teoria la neanche ci arriva per ora.