Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940

    Non voglio che si aggiorni una pagina!!

    Ho un problema di "aggiornamento pagine", usando un widget (Dojo) AJAX.

    Ad ogni evento di spostamento cartella (esempio "Move UP") di Dojo Tree (un albero AJAX) è possibile associare uno handler che esegue le funzioni JavaScript che desidero, ad esempio:

    Codice PHP:
    dojo.event.topic.subscribe('treeContextMenuUp/engage', function (menuItem)     
        {
        var 
    node menuItem.getTreeNode();
        if (
    confirm('Spostare la cartella '+node.title+'?'))
            {
            
    document.location.href "tree.php?moveDir&action=up&idDir="+node.objectId;
            
    dojo.widget.byId('treeController').move(node,node.parent,node.getParentIndex()-1);
            }
        }); 
    In sintesi, richiamo una pagina PHP per modificare backend il valore dei dati su database e
    istruisco Dojo perchè aggiorni l'albero senza ricaricare la pagina (figata, tra parentesi!).

    Bene (male) se richiamo la pagina PHP, anche senza ritornare nulla, mi si aggiorna cmq la pagina HTML corrente, perchè uso un document.location.href.

    Avete suggerimenti per far sì, in qualche modo, che il browser richiami sì la pagina PHP di backend, ma non aggiorni nulla se questa non ritorna nulla?
    Quella di aprire una pagina di popup no, è bruttissimo...
    [Qualche header particolare di tipo "NOOP" ??]

    O devo usare "AJAX by my own" ?

    Grazie 1000.

    [.:: JaguarXF ::.]
    __________________

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Risolto:

    Codice PHP:
    ...
    if (
    confirm('Spostare la cartella '+node.title+'?'))
        {
        
    //document.location.href = "tree.php?moveDir&action=down&idDir="+node.objectId;
        
    comunicazione_ajax_backend("tree.php?moveDir&action=down&idDir="+node.objectId);
        
    dojo.widget.byId('treeController').move(node,node.parent,node.getParentIndex()+1);
        } 
    con:
    Codice PHP:
        function comunicazione_ajax_backend(server_page)
            {
            
    // Richiama lo script desiderato, ajax-style.
            
    if (typeof window.ActiveXObject!="undefined"ajax = new ActiveXObject("Microsoft.XMLHTTP");
            else 
    ajax = new XMLHttpRequest();

            
    ajax.open("GET",server_page,true);
            
    ajax.setRequestHeader("Connection","close"); // no connessioni persistenti.

            // Handler della risposta.
            
    ajax.onreadystatechange = function() { if (ajax.readyState==4handler_risposta_server(ajax.responseText); }

            
    ajax.send();
            return 
    true;
            } 

    [.:: JaguarXF ::.]
    __________________

  3. #3
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Ah, tramite la function JS:

    Codice PHP:
    function handler_risposta_server(msg)
        {
        if (
    msg!=""alert(msg);
        } 
    E lo script di backend:

    Codice PHP:
    // Spostamento cartella UP/DOWN.
    if (isset($_GET['moveDir']))
        {
        
    $cartella = new cartella($archidoc,$_GET['idDir']);
        if (!
    $cartella->modifica_posizione($_GET['action'])) echo "Non si dispone dei permessi di modifica.";
        exit;
        } 
    Gestisce anche gli errori.

    Belllllllllllllllllo!

    [.:: JaguarXF ::.]
    __________________

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.