Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    richiamare AJAX da pulsante

    Devo richiamare, al click sul pulsante di un form, una funzione JavaScript che mi attiva un'effetto AJAX.
    Per capirci, se potessi usare un link testuale, scriverei così:
    Codice PHP:
    [url="link.php"]CLICK QUI[/url
    Il risultato sarà la scomparsa della pagina, dietro un layer che si scurisce progressivamente, e l'apparizione di una finestra nella pagina, con il contenuto di 'link.php'.
    Ma come faccio, se devo usare un pulsante?
    Ho provato mettendo 'link.php' come action del form, e poi attribuire al pulsante
    onClick="MM_callJS('rel=\"ibox&height=500 \"')"
    ma apre la pagina 'link.php' come se fosse un normale link, senza attivare la funzione AJAX appena descritta.
    Come posso venirne a capo?
    metatad
    graphic & web design

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Manca il 90% della pagina... sospetto che l'effetto sia associato all'uso di

    rel="ibox&height=500"

    ma in che modo non posso indovinarlo.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    il resto della pagina (HTML) non è molto rilevante...
    questo, invece, è il JavaScript esterno che attiva la funzione:
    Codice PHP:
    var indicator_img_path "indicator.gif";
    function 
    init_ibox() {
        var 
    elem_wrapper "ibox";
        
    createIbox(document.getElementsByTagName("body")[0]);
        var 
    docRoot document.getElementsByTagName("a");
        var 
    ibAttr "rel";     
        var 
    e;
        for (var 
    0docRoot.length 1i++) {
                
    docRoot[i];
                if(
    e.getAttribute(ibAttr)) {
                    var 
    e.getAttribute(ibAttr);
                    if ((
    t.indexOf("ibox") != -1)  ||  t.toLowerCase() == "ibox") { 
                            
    e.onclick = function() { 
                                var 
    this.getAttribute(ibAttr);
                                var 
    params parseQuery(t.substr(5,999));
                                var 
    url this.href;
                                if(
    this.target != "") {url this.target
                                var 
    title this.title;
                                
    showBG();
                                
    showIbox(url,title,params);
                                return 
    false;
                            }; 
                    }
                }
         }
    }
    var 
    box_w_visible false;
    showBG = function() {
        var 
    box_w getElem('ibox_w');
        var 
    opacity_level 8;
        
    box_w_visible false;
        
    box_w.style.opacity 0;
        
    box_w.style.filter 'alpha(opacity=0)';
        for (var 
    i=0;i<=opacity_level;i++) {setTimeout('setOpacity('+i+')',70*i);} 
        
    setOpacity = function (value)    {
            var 
    box_w getElem('ibox_w');
            
    box_w.style.opacity value/10;
            
    box_w.style.filter 'alpha(opacity=' value*10 ')';
            if (
    value == opacity_level) {box_w_visible true;} 
        }
        
    box_w.style.display "";
        var 
    pagesize = new getPageSize();
        var 
    scrollPos = new getScrollPos();
        var 
    ua navigator.userAgent;
        if(
    ua.indexOf("MSIE ") != -1) {box_w.style.width pagesize.width+'px';} 
        else {
    box_w.style.width pagesize.width+'px';}
        
    //box_w.style.height = document.body.scrollHeight+50+'px';
        
    box_w.style.height pagesize.height+scrollPos.scrollY+'px';
    }
    hideBG = function() {
        var 
    box_w getElem('ibox_w');
        
    box_w.style.display "none";bg_opacity 0;box_w_visible false;
    }
    showIndicator = function() {
        var 
    ibox_p getElem('ibox_progress');
        
    ibox_p.style.display "";
        
    posToCenter(ibox_p);
        
    ibox_p.onclick = function() {hideIbox();hideIndicator();}
    }
    hideIndicator = function() {
        var 
    ibox_p getElem('ibox_progress');
        
    ibox_p.style.display "none";
        
    ibox_p.onclick null;
    }
    createIbox = function(elem) {
        var 
    strHTML "<div id=\"ibox_w\" style=\"display:none;\"></div>";
        
    strHTML +=    "<div id=\"ibox_progress\" style=\"display:none;\"><img src=\""+indicator_img_path+"\" alt=\"Loading...\"";
        
    strHTML +=    "style=\"width:128px;height:128px;\"/></div>";
        
    strHTML +=    "<div id=\"ibox_wrapper\" style=\"display:none\">";
        
    strHTML +=    "<div id=\"ibox_content\"></div>";
        
    strHTML +=    "<div id=\"ibox_footer_wrapper\"><div id=\"ibox_close\" style=\"float:right;\">";
        
    strHTML +=    "<a id=\"ibox_close_a\" href=\"javascript:void(null);\" >[b]<font color=\"#ffffff\">Close Win</font>[/b]</a></div>";
        
    strHTML +=  "<div id=\"ibox_footer\"></div></div></div></div>";
        var 
    docBody document.getElementsByTagName("body")[0];
        
    docBody.style.overflowY "auto";
        var 
    ibox document.createElement("div");
        
    ibox.setAttribute("id","ibox");
        
    ibox.innerHTML strHTML;
        
    elem.appendChild(ibox);
    }
    var 
    ibox_w_height 0;
    showIbox = function(url,title,params) {
    var 
    ibox getElem('ibox_wrapper');
    var 
    ibox_type 0;

        var 
    ibox_footer getElem('ibox_footer');
        if(
    title != "") {ibox_footer.innerHTML title;} else {ibox_footer.innerHTML "";}
        var 
    urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt/g;
        var 
    urlType url.match(urlString);
        if(
    urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif'){
            
    ibox_type 0;
            
    showIndicator();
            var 
    imgPreloader = new Image();
            
    imgPreloader.onload = function(){
                var 
    pagesize = new getPageSize();
                var 
    pagesize.width 100;
                var 
    pagesize.height 100;
                if(
    imgPreloader.width x) { 
                    
    imgPreloader.height imgPreloader.height * (x/imgPreloader.width); 
                    
    imgPreloader.width x
                    if(
    imgPreloader.height y) { 
                        
    imgPreloader.width imgPreloader.width * (y/imgPreloader.height); 
                        
    imgPreloader.height y
                    }
                } 
                else if(
    imgPreloader.height y) { 
                    
    imgPreloader.width imgPreloader.width * (y/imgPreloader.height); 
                    
    imgPreloader.height y
                    if(
    imgPreloader.width x) { 
                        
    imgPreloader.height imgPreloader.height * (x/imgPreloader.width); 
                        
    imgPreloader.width x;
                    }
                }
                
    hideIndicator();    
                var 
    strHTML "<a href=\"javascript:void(null);\"><img src=\""+url+"\" style=\"width:"+imgPreloader.width+"px;height:"+imgPreloader.height+"px;border:0;\"/></a>";
                
    setIBoxContent(strHTML);    
                
    ibox.style.height imgPreloader.height+'px';
                
    ibox.style.width imgPreloader.width+'px';
                
    ibox.style.display "";
                
    ibox.style.visibility "hidden";
                
    posToCenter(ibox); 
                
    ibox.style.visibility "visible";
            }
            
    imgPreloader.src url;
        } else if(
    url.indexOf("#") > 0) {
                var 
    strHTML "";
                
    ibox_type 1;
                var 
    elemSrcId url.substr(url.indexOf("#") + 1,1000);
                var 
    elemSrc getElem(elemSrcId);
                if(
    elemSrc) {
                    
    strHTML elemSrc.innerHTML;
                }
                
    setIBoxContent(strHTML);
                if(
    params['height']) {ibox.style.height params['height']+'px';} 
                else {
    ibox.style.height '280px';}
                if(
    params['width']) {ibox.style.width params['width']+'px';} 
                else {
    ibox.style.width '450px';}
                
    ibox.style.display "";
                
    ibox.style.visibility "hidden";
                
    posToCenter(ibox); 
                
    ibox.style.visibility "visible";
        }else if(
    urlType=='.htm'||urlType=='.html'||urlType=='.php'||
                 
    urlType=='.asp'||urlType=='.aspx'||urlType=='.jsp'||
                 
    urlType=='.jst'||urlType=='.rb'||urlType=='.txt'||
                 
    urlType=='.cfm') {
                
    ibox_type 2;
                
    showIndicator();
                
    http.open('get',url,true);
                
    http.onreadystatechange = function() {
                    if(
    http.readyState == 4){
                        var 
    response http.responseText;
                        
    setIBoxContent(response);
                        
    hideIndicator();
                        if(
    params['height']) {ibox.style.height params['height']+'px';} 
                        else {
    ibox.style.height '280px';}
                        if(
    params['width']) {ibox.style.width params['width']+'px';} 
                        else {
    ibox.style.width '450px';}
                        
    ibox.style.display "";
                        
    ibox.style.visibility "hidden";
                        
    posToCenter(ibox); 
                        
    ibox.style.visibility "visible";
                    }
                }
                
    http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
                
    http.send(null);
        } 
        
    ibox.style.opacity 0;
        
    ibox.style.filter 'alpha(opacity=0)';    
        var 
    ibox_op_level 10;
        for (var 
    i=0;i<=ibox_op_level;i++) {setTimeout('setIboxOpacity('+i+')',30*i);}
        
    setIboxOpacity = function (value)    {
            var 
    ibox getElem('ibox_wrapper');
            
    ibox.style.opacity value/10;
            
    ibox.style.filter 'alpha(opacity=' value*10 ')';
        }
        if(
    ibox_type == || ibox_type == 2) {
            
    ibox.onclick null;
            
    getElem("ibox_close_a").onclick = function() {hideIbox();}
        } else {
            
    ibox.onclick hideIbox;
            
    getElem("ibox_close_a").onclick null;
        }
        
    window.onscroll maintPos;
    }
    maintPos = function() {
        var 
    ibox getElem('ibox_wrapper');
        var 
    box_w getElem('ibox_w');
        var 
    pagesize = new getPageSize();
        var 
    ua navigator.userAgent;
        if(
    ua.indexOf("MSIE ") != -1) {box_w.style.width pagesize.width+'px';} 
        else {
    box_w.style.width pagesize.width+'px';}
        
    box_w.style.height document.body.scrollHeight+'px';
        
    posToCenter(ibox);
    }
    hideIbox = function() {
        
    hideBG();
        var 
    ibox getElem('ibox_wrapper');
        
    ibox.style.display "none";
        
    clearIboxContent();
        
    window.onscroll null;
    }
    posToCenter = function(elem) {
        var 
    scrollPos = new getScrollPos();
        var 
    pageSize = new getPageSize();
        var 
    emSize = new getElementSize(elem);
        var 
    Math.round(pageSize.width/2) - (emSize.width /2) + scrollPos.scrollX;
        var 
    Math.round(pageSize.height/2) - (emSize.height /2) + scrollPos.scrollY;    
        
    elem.style.left x+'px';elem.style.top y+'px';
    }
    getScrollPos = function() {
        var 
    docElem document.documentElement;
        
    this.scrollX self.pageXOffset || (docElem&&docElem.scrollLeft) || document.body.scrollLeft;
        
    this.scrollY self.pageYOffset || (docElem&&docElem.scrollTop) || document.body.scrollTop;
    }
    getPageSize = function() {
            var 
    docElem document.documentElement
            this
    .width self.innerWidth || (docElem&&docElem.clientWidth) || document.body.clientWidth;
            
    this.height self.innerHeight || (docElem&&docElem.clientHeight) || document.body.clientHeight;
    }
    getElementSize = function(elem) {
        
    this.width elem.offsetWidth ||  elem.style.pixelWidth;
        
    this.height elem.offsetHeight || elem.style.pixelHeight;
    }
    setIBoxContent = function(str) {
        
    clearIboxContent();
        
    getElem('ibox_content').innerHTML str;
    }
    clearIboxContent = function() {
        
    getElem('ibox_content').innerHTML "";
    }
    getElem = function(elemId) {
        return 
    document.getElementById(elemId);    
    }
    parseQuery = function(query) {
       var 
    Params = new Object ();
       if (!
    query) return Params
       var 
    Pairs query.split(/[;&]/);
       for ( var 
    0Pairs.lengthi++ ) {
          var 
    KeyVal Pairs[i].split('=');
          if ( ! 
    KeyVal || KeyVal.length != ) continue;
          var 
    key unescapeKeyVal[0] );
          var 
    val unescapeKeyVal[1] );
          
    val val.replace(/\+/g' ');
          
    Params[key] = val;
       }
       return 
    Params;
    }
    createRequestObject = function() {
        var 
    xmlhttp;
        if (!
    xmlhttp && typeof XMLHttpRequest != "undefined") {
                try {
    xmlhttp = new XMLHttpRequest();} catch (e) {xmlhttp false;}
        }
        return 
    xmlhttp;
    }
    var 
    http createRequestObject();
    function 
    addEvent(objevTypefn){ 
     if (
    obj.addEventListener){ 
       
    obj.addEventListener(evTypefnfalse); 
       return 
    true
     } else if (
    obj.attachEvent){ 
       var 
    obj.attachEvent("on"+evTypefn); 
       return 
    r
     } else { 
       return 
    false
     } 
    }
    addEvent(window'load'init_ibox); 
    Spero serva a capire.
    metatad
    graphic & web design

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ho risolto, con un pò di PHP...
    Allora, questo è il codice del form:
    Codice PHP:
    <form action="magtest.php" method="get" name="signal">
    <
    input name="link" id="link" type="text" class="text" value="">
    <
    input name="byform" id="byform" type="hidden" value="hidata">

    <
    input name="Submit" type="submit" class="pulsante" value="Submit"></form
    laddove 'magtest.php' è il nome della pagina in cui si trova il form stesso. In pratica, aggiungo al form un valore nascosto che passo alla pagina, e che - ovviamente - quando la pagina viene richiamata da un link, o digitando direttamente l'URL, non c'è.
    Quindi, nel tag <body> ho aggiunto questo PHP:
    Codice PHP:
    <body <? $dominio $_GET["link"];
    //qui metto la funzione che registra il dato nel db;
    $ctrl $_GET["byform"];
    if (
    $ctrl == "hidata") {
        echo 
    "return toggleMe('mylink'); MM_goToURL('parent','link.php'); return document.MM_returnValue; rel='ibox&height=500'";
    }
    ?>">
    Ora, tutto funziona.
    metatad
    graphic & web design

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