Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    ajax updater blocca gli <script>

    Ho un problema su quale mi sto arrovellando da giorni ma non riesco a venirne a capo.

    Premetto che mi sto avvicinando ad ajax e prototype da poco.

    Ho una pagina "portfolio.php" nella quale c'è un slide-menù dinamico che lavora con protoptype.js e uno script menu.js.

    Se visualizzo la pagina così com'è tutto funziona.
    Questa è la pagina:

    http://www.sgsadv.it/nuovo/portfolio.php

    Se però inserisco questa pagina con una chiamata ajax nel <div> di un'altra pagina contenitore, il menu resta aperto, come se lo script menu.js venisse disabilitato.

    Il link con la chiamata ajax nella pagina index.php è:

    portfolio

    dove 'main' è il <div> nella pagina index.php dove devo inserire la pagina.

    L'header della pagina index richiama lo script menu.js ma non funziona.

    Credo che il problema sia nella chiamata ajax dell'evento onclick, nel senso che mancano delle opzioni di ajax, ma non riesco a capire quali sono e come si scrivono.

    Qualcuno mi sa dire dove sbaglio?

    Grazie a tutti

  2. #2
    ehm, le chiamate Ajax di default non eseguono gli script... devi importare lo script ed evalutarlo DOPO che la chiamata AJAX è conclusa.

    Dai un'occhiata a http://www.prototypejs.org/api/string/evalScripts

  3. #3
    Ciao Artorius

    intanto grazie per avermi risposto.

    Si lo sapevo che ajax non esegue lo script. Infatti nella pagina portfolio ho inserito una funzione che mi richiama lo script quando la pagina è caricata. Pensavo bastasse quello, invece no.

    Inoltre nella chiamata ajax avevo anche provato ad aggiungere:

    portfolio

    ma il problema rimane.

    Insomma credo di aver trovato FORSE gli "ingredienti" giusti ma non so come usarli.

    Nella pagina che mi hai postato evalScripts viene scritto dopo la chiusura dello script, ma nel mio caso lo script è nella pagina che chiamo, è lì che va usato?

  4. #4
    Perché non lo estrapoli dalla pagina e lo inserisci in un file JS che importi nella pagina principale ancora prima della chiamata AJAX?

  5. #5
    Andiamo per gradi.

    importare lo script.

    Questo script importa lo script menu.js nel tag <head> nella pagina index.php dopo averla caricata.

    <script type="text/javascript">
    document.observe("dom:loaded", function() {
    var script = new Element("script", { type: "text/javascript", src: "script/menu.js" });
    $$("head")[0].insert(script); });
    </script>

    oppure potrei usare semplicemente
    <script src="script/menu.js" type="text/javascript"></script>

    Forse è qui che iniziano i problemi e cioè: la pagina contenitore index.php non carica immediatamente anche la pagina portfolio.php ma altri contenuti. Quando richiamo la pagina portfolio nel div, lo script menu.js è già caricato.

    Infatto ho provato a caricare la pagina index.php inserendo nel div con un include la pagina portfolio.php e funziona.

    e' sulla chiamata che perdo questa informazione, probabilmente perché nella chiamata devo dare delle istruzioni su cosa fare con lo script.
    Ma qui mi perdo.......

  6. #6
    allora, domanda N°1: è visibile in rete questo sito?

    Domanda N° 2: porfolio.php (quella che chiami con AJAX) effettui qualche istruzione JS?

  7. #7
    Si è visibile a questo indirizzo:

    http://www.sgsadv.it/nuovo/index.php

    sulla pagina portfolio.php carico gli stessi script che si caricano nella index.

  8. #8
    ed esattamente, cos'è che non va nella pagina porfolio?

  9. #9
    nella pagina portofolio il menu a sinistra funziona (si apre e chiude con effetto slide) se la apri da sola cioè con

    http://www.sgsadv.it/nuovo/portfolio.php


    ma dovendola chiamare all'interno del div main nella pagina index.php con il link portfolio, il menu a sinistra rimane aperto mentre dovrebbe essere chiuso come se vedessi la pagina dal link qui sopra.

    In entrambe le pagine (index e portfolio) ci sono gli script che fanno funzionare il menu e sono prototype.js (ultima versione) e menu.js.

    In realtà portfolio.php dovrebbe funzionare comunque anche se inserita nel div della pagina index.php.

    Invece no.

    Se apri la pagina index con firebug vedi che nel div main, dopo aver caricato la pagina portfolio, compare tutto , anche il title, i fogli stile, ecc, tranne che lo script menu.js.

    Non capisco più niente.

  10. #10
    allora, quando usi l'updater fai così:

    Codice PHP:
    new Ajax.Updater(ildivlapagina, {onComplete : function(){
    initMenus();
    }}) 
    insomma aggiungi la funzione initMenus che attiva i menu DOPO che la chiamata AJAX ha modificato l'HTML

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 © 2026 vBulletin Solutions, Inc. All rights reserved.