Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [CI] Problemi con AJAX

  1. #1

    [CI] Problemi con AJAX

    salve!
    ho provato a seguire varie guide per usare AJAX con jquery nel framework Codeigniter.
    nella pagina ho fatto questo:
    Codice PHP:
            <?php foreach ($articoli as $var): ?>
                <tr>
                    <td>[url="javascript:dtlArticolo();"]<?php echo $var->articolo_codice?>[/url]</td>
                    <td><?php echo $var->articolo_descit?></td>
                </tr>
            <?php endforeach; ?> 

    <script type="text/javascript">
        function dtlArticolo() {
            $.ajax({
                url: "<?php echo base_url() . 'dtlarticolo/getdtlarticolo'?>",
                data: {},
                type: 'POST',
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                success: function(response) {
                    $("#dtl_articolo").html(response);
                },
                error: function() {
                    $("#dtl_articolo").html('ERRORE');
                }
            });
        }
    </script>



    <div id="dtl_articolo">

    </div>
    esce sempre ERRORE.
    guardando la console di firebug:
    codice:
    "NetworkError: 500 Internal Server Error - http://www.sito.it/alpha/dtlarticolo/getdtlarticolo"
    se provo ad andarci direttamente in console mi esce questo avviso:
    codice:
    Non è stata dichiarata la codifica caratteri del documento HTML. Il documento verrà visualizzato con del testo incomprensibile in alcune configurazioni del browser nel caso in cui contenga dei caratteri al di fuori dell'intervallo US-ASCII. La codifica caratteri di una pagina deve essere dichiarata nel documento o nel protocollo di trasferimento.
    sinceramente nn saprei più dove sbattere la testa.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Sbaglio o con la chiamata ajax non invii alcun dato? E' giusto che sia così?

    Una cosa che col problema non dovrebbe entrarci, ma ad ogni modo:
    tu scrivi
    base_url() . 'dtlarticolo/getdtlarticolo'

    l'uso corretto in CI è
    base_url('dtlarticolo/getdtlarticolo')

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    19
    Sicuro che funzioni la pagina lato server "dtlarticolo/getdtlarticolo" ? Quella che chiami con ajax?
    Io sono tuo padre, Luke! Slittino - Sea Scooter - Calciobalilla - Ping Pong

  4. #4
    allora.
    per ora nn ho messo dati da inviare proprio per semplificare il tutto.
    probabile che la pagina che tento di richiamare nn funzioni.
    Codice PHP:
    class Dtlarticolo extends CI_Controller {

        function 
    __construct() {
            
    parent::__construct();
        }

        public function 
    getDtlArticolo() {
            
    $query $this->db->get('art');
            if (
    $query->num_rows 0) {
                
    $output_string "";
                
    $output_string .= "<table border='1'>\n";
                foreach (
    $query->result() as $row) {
                    
    $output_string .= "<tr>\n";
                    
    $output_string .= "<th>{$row['cod']}</th>\n";
                    
    $output_string .= "</tr>\n";
                }
                
    $output_string .= "</table>\n";
            } else {
                
    $output_string "There are no results";
            }
            return 
    json_encode($output_string);
        }


    codice ripreso dall'esempio, cambiando la query ovviamente.
    nn so se possa essere qua l'errore.

  5. #5
    Ciao, hai provato a fare echo json_encode($output_string) al posto di return json_encode($output_string)?

  6. #6
    penso che il problema sia nel foreach:
    Codice PHP:
        public function getDtlArticolo() {
            
    $query $this->db->get('cr_articoli');
            if (
    $query->num_rows 0) {
                
    $output_string "";
                
    $output_string .= "<table border='1'>\n";
                echo 
    'CIAO';
                foreach (
    $query->result() as $row) {
                    
    $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);
        } 
    quel CIAO si vede se lo metto la.
    ma se lo metto nel froeach non si vede più.

  7. #7
    Mmm...ma...result() di Codeigniter non ritorna una lista di oggetti?!

    Prova a sostituire
    Codice PHP:
    $output_string .= "<th>{$row['articolo_codice']}</th>\n"
    con
    Codice PHP:
    $output_string .= "<th>{$row->articolo_codice}</th>\n"

  8. #8
    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.

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ma a num_rows non ti sei dimenticato le parentesi?
    $query->num_rows()

  10. #10
    si ci vanno le parentesi in effetti.
    ma il comportamento nn cambia.
    ho provato anche tesare l'opzione opposta (< 0).
    in caso mi compare There are no results.
    quindi quell'if funziona.
    cmq a scanso di equivoci:
    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
    '
    ;
                echo 
    $query->num_rows();
                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);
        } 
    mi sono fatto stampare anche il numero di record.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.