Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Scorrere record con AJAX e ASP

    Salve amici,

    allora vorrei far scorrere dei dati in un div prelevati da un database con Ajax e ASP:

    codice:
            <script type="text/javascript">
    var XMLHTTP;
    
    function Richiesta(pagina)
    {
        if (pagina.length > 0)
        {
           
            XMLHTTP = RicavaBrowser(CambioStato);
            XMLHTTP.open("GET", "inc_dati.asp?pag=" + Pagina, true);
            XMLHTTP.send(null);
        }
        else
        {
            document.getElementById("risultati").innerHTML = "";
        } 
    }
    
    function CambioStato()
    {
        if (XMLHTTP.readyState == 4)
        {
            var R = document.getElementById("risultati");
            R.innerHTML = XMLHTTP.responseText;
        }
    }
    
    function RicavaBrowser(QualeBrowser)
    {
        if (navigator.userAgent.indexOf("MSIE") != (-1))
        {
            var Classe = "Msxml2.XMLHTTP";
            if (navigator.appVersion.indexOf("MSIE 5.5") != (-1));
            {
                Classe = "Microsoft.XMLHTTP";
            } 
            try
            {
                OggettoXMLHTTP = new ActiveXObject(Classe);
                OggettoXMLHTTP.onreadystatechange = QualeBrowser;
                return OggettoXMLHTTP;
            }
            catch(e)
            {
                alert("Errore: l'ActiveX non verrà eseguito!");
            }
        }
        else if (navigator.userAgent.indexOf("Mozilla") != (-1))
        {
            OggettoXMLHTTP = new XMLHttpRequest();
            OggettoXMLHTTP.onload = QualeBrowser;
            OggettoXMLHTTP.onerror = QualeBrowser;
            return OggettoXMLHTTP;
        }
        else
        {
            alert("L'esempio non funziona con altri browser!");
        }
    }
    </script>
    e questo è il codice HTML:
    codice:
              <ul id="risultati">[/list]
              <button id="pagina" type="button" value="10" onClick="richiesta(this.value)">altre...</button>
    Il problema è che non mi funziona! Ovviamente nella pagina ASP passo con request.querystring il valore del numero di record che voglio visualizzare!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  2. #2
    Direi che è più un problema javascript che asp, dovresti far spostare la discussione.

    Comunque anziché reinventare l'acqua calda perché non provi un framework tipo jQuery per le chiamate ajax? E' un mondo meraviglioso

    xxx

  3. #3
    Assolutamente DEVI usare jQuery. Non ci sono santi.
    Hai qualche rudimento a proposito di jQuery?

  4. #4

    ok

    Ok sto dando un'occhiata a jquery ed effettivamente sembrerebbe più semplice!

    codice:
    <script type="text/javascript">
    $(document).ready(function() {
      $("#bottone").click(function(){
        var pag = $("#pag").val();
        var pagine = $("#pagine").val();
        $.ajax({
          type: "POST",
          url: "test.asp",
          data: "pag=" + pag + "&pagine=" + pagine,
          dataType: "html",
          success: function(msg)
          {
            $("#risultato").html(msg);
          },
          error: function()
          {
            alert("Chiamata fallita, si prega di riprovare...");
          }
        });
      });
    });
    </script>
    E questo dovrebbe servire per comunicare con la pagina dei record in ASP dove pag indica il record di partenza e pagine quello finale.
    Come effettuo però in pratica la chiamata?

    Nel senso che io vorrei mettere sotto ai risultati una semplice immagine di freccia che ogni volta che si clicca mi scorre n record!!!!!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  5. #5
    Fatico un po' a capire ciò di cui hai bisogno, se devi paginare con asp + jquery cerca su google e troverai tanto materiale.
    In pratica ti serve:

    una pagina asp che estrae i record (da chiamare via ajax). Ti consiglio di formattare l'output di tale pagina in json, ci sono diverse classi pronte che fanno questo lavoro ex. http://code.google.com/p/aspjson/)

    una pagina chiamante con una funzione che esegua la chiamata ajax e, sull'evento success formatti il risultato.

    Per la paginazione dovrai occuparti tu di gestire nei parametri passati la pagina da richiedere, nonché la paginazione effettiva nella pagina chiamata.

    xxx

  6. #6
    Alethesnake ha ragione, anche io non ho ben capito cosa vuoi fare.
    Vuoi semplicemente mostrare dei dati da un database, vuoi modificare dei dati, vuoi caricare qualcosa dal DB dopo un click?
    jQuery ti da una mano per fare tutto, però bisogna capire un attimo cosa vuoi fare.

    Chiaramente, se tu strutturi i dati nella pagina HTML e poi modificarli con jQuery, puoi farlo senza problemi. Gestisci gli stili con un CSS, e gli cambi solamente i dati all'interno.

    Se tu hai questo:
    codice:
    <div id="mydiv">
    testo del DIV
    </div>
    Puoi sempre modificare il contenuto del DIV facendo
    codice:
    $('#mydiv').html('testo modificato del DIV');
    Lo puoi fare dopo un CLICK, dopo un setTimeout()... cosa devi fare?

  7. #7

    ok

    Allora ho una pagina con un'elenco, che viene caricato da un DB.
    Quindi l'elemento in cui inserirò gli elementi è un UL.
    dopo questo elenco che ogni volta è di 10 record, c'è un'immagine a freccia....
    che codice do a quella per far partire il codice jquery....e come gli attribuisco i valori del record a cui siamo!

    In pratica ti facco un'esempio con un link che dovrebbe caricare:

    http://www.miosito.it/test.asp?pag=1&pagine=10 per mostrare i primi 10 record.

    Una volta caricati questi diventerà:

    http://www.miosito.it/test.asp?pag=11&pagine=21 per mostrare i altri 20 record

    e così via.... Io so prelevarli in ASP, ma come associo la chiamata a quel pulsante?
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  8. #8

    allora

    allora ho provato questo:
    codice:
     <script type="text/javascript">
    $(document).ready(function() {
      $("#bottone").click(function(){
        var pag = $("#pag").val();
        var pagine = $("#pagine").val();
        $.ajax({
          type: "GET",
          url: "inc_kamasutra.asp",
          data: "pag=" + pag + "&pagine=" + pagine,
          dataType: "html",
          success: function(msg)
          {
            $("#risultato").html(msg);
          },
          error: function()
          {
            alert("Chiamata fallita, si prega di riprovare...");
          }
        });
      });
    });
    </script>
            <div class="domande">
              <ul id="risultato">[/list]
              <form>
                <input name="pag" type="hidden" value="1" />
                <input name="pagine" type="hidden" value="5" />
                <button id="bottone" type="button">altre...</button>
              </form>
            </div>
    Ma mi da l'alert di chiamata fallita!
    Come capisco l'errore?
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  9. #9
    Ooook, ora si capisce un po' di più.
    Io gestirei le cose così ( ma non vuol dire che sia la via giusta ):

    Pagina:
    codice:
    <div>
       <ul id='mialista'>
    
    [/list]
       <div id='newpage'>Carica nuovi articoli</div>
    </div>
    Quindi non carichi nulla in fase di caricamento della pagina.
    Appena hai caricato il DOM, fai una chiamata ajax ad una pagina ASP, passandogli anche quale pagina deve caricare. Questo lo fai passandogli una variabile querystring ( pag ).
    Nella pagina asp, se pag=1 o pag='' allora carica i primi 10 articoli, altrimenti moltiplichi il numero della pagina * 10.

    Ad ogni chiamata, salvi il numero della pagina in una variabile, cosi lo puoi recuperare quando vuoi.

    Se per caso fai rispondere alla pagina ASP con un flusso JSON, puoi gestirti i singoli record, manipolarli e metterli in elenco, altrimenti produci solamente un blocco HTML ( una serie di LI) e fai

    codice:
    $('#mialista').html( flusso_ASP );

  10. #10

    risolto

    Allora ho risolto così:
    codice:
            <script type="text/javascript">
    $(document).ready(function() {
      $("#bottone").click(function(){
        var pag = $("#pag").val();
        var pagine = $("#pagine").val();
        $.ajax({
          type: "GET",
          url: "inc_test.asp",
          data: "pag=" + pag + "&pagine=" + pagine,
          dataType: "html",
          success: function(msg)
          {
            $("#risultato").html(msg);
    		$("#pag").val(parseInt(pag)+5);
        	$("#pagine").val(parseInt(pagine)+5);
          },
          
        });
    	$("#msg").ajaxError(function(event, request, settings){
      $(this).append("[*]Error requesting page " + settings.url + "");
    });
      });
    });
    </script>
            <div class="domande"> 
              <script type="text/javascript">
    		</script>
              <div id="msg"></div>
              <ul id="risultato">[/list]
              <form>
                <input id="pag" type="hidden" value="1" />
                <input id="pagine" type="hidden" value="5" />
                <button id="bottone" type="button">altre...</button>
              </form>
    Però ora pensavo che il pulsante mi manda solo avanti i record, e non posso tornare indietro...e se volessi tipo i classici numeri?

    <ul>
    <li id="1">1
    <li id="2">2
    <li id="3">3[/list]

    Come potrei fare?
    Potrei generarli dinamicamente con un COUNT(*) dei record in base a quanti ne mostro per volta..... e poi?
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

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.