jQuery ajax complete

  • Creatore Discussione Creatore Discussione geppo
  • Data di inizio Data di inizio

geppo

Nuovo Utente
7 Feb 2006
1
0
0
Ciao a tutti,
sto provando a usare jQuery per poter popolare una tabella con dati attinti da db mysql tramite php (Non so se questa è la sezione giusta dove postare)

Storia: da una ricerca sul database mysql creo una pagina con tabella che mi mostra i dati.
Se i dati sono molti (es. più di 15), in tabella sono mostrati i primi 15 record e poi mostro una barra di navigazione 1-2-... dove, cliccando sul numero,
mi mostra i record relativi allo scaglione scelto (2:i secondi 15, 3:i terzi 15,...)
Questa operazione è effettuata con una chiamata ajax di jQuery.
Questo giochino funziona correttamente la prima volta, ossia la prima volta mi mostra i primi 15 record (questo perché ancora non fa nessuna chiamata ajax) e se clicco su un numero, es 3, mi mostra la terza pagina di record correttamente, ma poi se provo a cliccare su un altro numero non succede nulla.

Un'altra cosa che non fa, e questo anche la prima volta, ho messo un messaggio quando completa l'azione ajax, ma questo messaggio non è mai mostrato

Ecco un po' di codice

cerca.php
Codice:
  ...
      echo "<div id=\"risultatoRicerca\">\n";
                         
      // imposto la visualizzazione di soli recXPagina record alla volta
      $limite = "";
      $recXPagina = 2;

      // recupero il numero totale di record
      $risTotale = RunQuery(qSchede($where, $limite));
      $numRecTotale =mysql_num_rows($risTotale);
      
      // se ho più record di quelle da visualizzare per ogni singola pagina imposto una BARRA di NAVIGAZIONE
      if ($numRecTotale>$recXPagina) {
        $numPagine = ceil($numRecTotale/$recXPagina);
        echo "        <div id=\"navigaRecord\">\n";
        // passo il filtro $where valorizzato nella parte iniziale del file che ho omesso
        echo "          <p scelta=\"$where\">Pagina ";
        for ($i=1; $i<=$numPagine; $i++) {
          // passo il numero della pagina
          if ($i==$numPagine) {
            echo "<a href=\"$i\" >$i</a> ";
          }
          else {
            echo "<a href=\"$i\" >$i</a> - ";
          }
        } 
        echo "($recXPagina record per pagina, $numRecTotale record Totali)</p>\n        </div> <!-- fine navigaRecord -->\n";
      }

      $limite = "LIMIT 0, $recXPagina ";
      $risultato = RunQuery(qSchede($where, $limite));
      
      // inserisco i record in una tabella
      echo "        <div id=\"tabellaRicerca\">\n";
      echo "          <table>\n";
      // testata
      echo "            <tr class=\"testata\"><td>CPI</td><td>Data</td><td>Cognome Nome</td><td>Sesso</td><td>Et&agrave;</td>\n";
.... stampa per tutti i campi da mostrare
      echo "              </tr>\n";

      if (@mysql_num_rows($risultato)>0) {
         $tiporiga = "rigapari";
        // scorro i record
        while ($rec = mysql_fetch_array($risultato)) {
          $tiporiga=cambioRigaTab($tiporiga);
          // estraggo i dati dalla scheda
          $idScheda=$rec['idScheda']; // identificativo Scheda
  ... recupero tutti i dati dal db e associo una variabile a ciascuno come l'idScheda
          // visualizzo i dati
          echo "            <tr class=\"$tiporiga\"><td>$cpi</td>";
  ... popolo la tabella con tutti i campi
          echo "            </tr>\n";
        }
      }
      else {
        echo "<p>Nessun record soddisfa i criteri impostati</p>\n";
      }
      echo "          </table>\n";
      echo "        </div> <!-- fine tabella Ricerca -->\n";  
      echo "      </div> <!-- fine risultato Ricerca -->\n";
 ...
RunQuery non è altro che una mia interfaccia a mysql_query()
mentre qSchede è una funzione che crea la query mettendo la parte di filtro (WHERE...) e il numero di record (LIMIT ...)


filejQuery.js

Codice:
$('#navigaRecord a').click(function(event) {
    event.preventDefault();
    var where =  $("#navigaRecord p").attr("scelta");
    var pagina = $(this).attr("href");
    alert("Letto pagina "+pagina+" e scelta "+where );
    $.ajax({
      type: "POST",
      url: "tabellaRicerca.php",
      data: "where=" + where + "&pagina="+ pagina,
      dataType: "html",
      success: function(msg){
        $("#tabellaRicerca").replaceWith(msg);
        alert(aggiornato);   
       },  
      error: function(){
        alert("Impossibile visualizzare altri record!");
      },
      complete: function(){
        alert("completato");
      }
    });            

   
  }); // --- naviga record ---

tabellaRicerca.php
Non è altro che la parte che compila la tabella di cerca.php

Non riesco a capire perché fa così, e forse è collegato al fatto che non completa l'azione ajax?
Grazie per qualsiasi consiglio
 
I numeri delle pagine li generi con Ajax?
Se la risposta è sì prova ad usare il metodo "live" per gestire gli eventi.
 

Discussioni simili