Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136

    creare funzione da script già funzionante

    Salve a tutti,
    con un pò di "sacrificio" mi sono costruito uno script che interroga un servizio esterno al mio sito tramite httprequest ora però all'interno della pagina dovrei effettuare diverse interrogazioni e avrei pensato di creare una funzione che ogni volta richiamo passando parametri diversi. Ma non mi funziona.

    lo script è il seguente:
    Codice PHP:
    <script type="text/javascript">
    new Ajax.Request('xhr.php', {
    method: 'post', 
    parameters: {email: '<?php echo $row_Corale['Email']; ?>', lista: '3', listguid: '0ef1281e-15a0-4586-8c95-1229c7227da5'},
    onSuccess: function(transport){
        var notice = $('noticeEN');
        if (transport.responseText.match('2'))
          notice.update('Yeah! Iscritto alla lista!').setStyle({ background: '#dfd' });
        else
          notice.update('Bhuu! Non iscritto alla lista!').setStyle({ background: '#fdd' });
         //alert("Success! \n\n" + response);
        },
    onLoading: function(){ notice.update('controllo in corso')},
    onFailure: function(){ alert('Qualcosa è andato storto...') }
      });  
      </script>
    allora ho creato una funzione a partire da questo script passando i parametri che di volta in volta cambiano e ho scritto questo tra i tag head:


    Codice PHP:
    <script type="text/javascript">
        function 
    verificaNewsletter(var indirizzo, var idlista, var codicelista, var nomeelemento){
        
        new 
    Ajax.Request('xhr.php', { method'post'parameters: {emailindirizzolistaidlistalistguidcodicelista},
        
    onSuccess: function(transport){
            var 
    notice = $(nomeelemnto);
            if (
    transport.responseText.match('2'))
                  
    notice.update('Yeah! Iscritto alla lista!').setStyle({ background'#dfd' });
            else
                  
    notice.update('Bhuu! Non iscritto alla lista!').setStyle({ background'#fdd' });
         
    //alert("Success! \n\n" + response);
         
    },
        
    onLoading: function(){ notice.update('controllo in corso')},
        
    onFailure: function(){ alert('Qualcosa è andato storto...')}
      });
    }

    </script> 
    e provo a richiamarla nel body facendo

    <body onload="avvia();">

    dove avvia() è la seguente sempre contenuta fra i tag head:


    Codice PHP:
    <script>
    function avvia(){

    verificaNewsletter('<?php echo $row_Corale['Email']; ?>',1,'7afbc7d7-ead5-43b9-b90a-a99d9ee9855e','noticeIT');

        }
    </script>
    ovviamente lo script utilizza prototype che richiamo all'inizio della pagina. Lo script funziona bene se invece provo la funzione non succede assolutamente nulla e ricevo 2 errori:
    alla linea dove è scritto:

    function verificaNewsletter(var.....)

    e alla linea dove viene richiamata questa funzione.

    Dove sbaglio? Qualcuno può darmi una mano?
    Ciao e grazie.
    Luigi

  2. #2
    perché non devi mettere i var:

    function verificaNewsletter(indirizzo, idlista, codicelista, nomeelemento){
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136
    I var non servono a creare variabili locali utilizzabili solo dalla funzione? Se utilizzassi variabili globali cosa succederebbe richiamando più volte la funzione? Appena posso provo e ti faccio sapere! Ciao e grazie.
    Luigi

  4. #4
    ma non devi metterli nella lista degli argomenti, perché gli argomenti passati sono già variabili definte solo nello scope della funzione.

    In ogni caso, mettere o non mettere il var non cambia niente in JS, è comodo quando ne hai parecchie, perché le dichiari all'inizio della funzione e le vedi subito, anziché andarle a cercare nel codice.

    Piccolo grande Hint della programmazione
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136
    Ciao e grazie per il suggerimento. Qualcosa comincia a funzionare.
    Ho messo come prima istruzione delle funzione un alert per farmi stampare le variabili passate e sono proprio quelle giuste.

    Ora mi dà un errore alla linea 26 dove c'è scritto new Ajax.Request(....

    la console di errori di Safari mi dice:
    Can't find variable: Ajax

    eppure nell'head ho importato la libreria prototype dove dovrebbe trovarsi questa variabile, no?

    Suggerimenti?
    Ciao e grazie.
    Luigi

  6. #6
    ma hai impostato la chiamata alla funzione al caricamento della pagina?
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136
    Ciao e grazie per le risposte.

    La situazione è la seguente:



    Codice PHP:
    <head>

    <script type="text/jscript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>

    <script type="text/javascript">
        function verificaNewsletter(indirizzo, idlista, codicelista, nomeelemento){
        alert(indirizzo + "\n" + idlista + "\n" + codicelista + "\n" + nomeelemento);
        new Ajax.Request('xhr.php', { method: 'post', parameters: {email: indirizzo, lista: idlista, listguid: codicelista},
        onSuccess: function(transport){
            var notice = $(nomeelemnto);
            if (transport.responseText.match('2'))
                  notice.update('Yeah! Iscritto alla lista!').setStyle({ background: '#dfd' });
            else
                  notice.update('Bhuu! Non iscritto alla lista!').setStyle({ background: '#fdd' });
         //alert("Success! \n\n" + response);
         },
        onLoading: function(){ notice.update('controllo in corso')},
        onFailure: function(){ alert('Qualcosa è andato storto...')}
      });
    }

    </script>
    <script>
    function avvia(){

    verificaNewsletter('<?php echo $row_Corale['Email']; ?>',1,'7afbc7d7-ead5-43b9-b90a-a99d9ee9855e','noticeIT');

        }
    </script>
    </head>
    e poi
    Codice PHP:
    <body onload="avvia();"> <div id="noticeIT"></div> <body
    funziona perchè dopo il caricamento della pagina mi compare l'alert con i dati passati ma ricevo l'errore su questa riga:

    Codice PHP:
    new Ajax.Request('xhr.php', { method'post'parameters: {emailindirizzolistaidlistalistguidcodicelista}, 
    dice che è impossibile trovare la variabile Ajax
    Luigi

  8. #8
    <script type="text/jscript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>

    ?!?!?
    I DON'T Double Click!

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136
    ops...
    sarà stato l'autocompletamento dell'editor!

    Per farla funzionare a dovere ho solo dovuto fare un'altra piccola modifica ma ora è tutto ok!

    Grazie mille per l'aiuto.
    Luigi

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.