• User

    Invio del form sulla stessa pagina index.php

    Ciao a tutti.
    ho un problema con ajax, vorrei fare in modo che l'invio del form sta nella stessa pafina index.php e no in thank-you.php
    Ho trovato questo tutorial per imparare ma nn mi e' chiara ancora la parte su come devo mandare i valori che mi servono alla stessa pagina index.php
    Vi posto il codice

    
    // AJAX
    function GetXmlHttpObject()
    {
        if (window.XMLHttpRequest)
        {
            // IE7+, Firefox, Chrome, Opera, Safari
            return new XMLHttpRequest();
        }
        
        if (window.ActiveXObject)
        {
            // IE5, IE6
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
        
        return null;
    }
    
    function submitFormWithAjax()
    {
        var requestPost = new GetXmlHttpObject();
    
        var checkFormSendMail = document.formSendMail.checkFormSendMail.value;
        var sender = document.formSendMail.sender.value;
        var sendTo = document.formSendMail.sendTo.value;
        var subject = document.formSendMail.subject.value;
        var textMessage = document.formSendMail.textMessage.value;
        var captcha = document.formSendMail.captcha.value;
    
        var parameters = "checkFormSendMail=" + checkFormSendMail + "&sender=" + sender + "&sendTo=" + sendTo + "&subject=" + subject + "&textMessage=" + textMessage
                            + "&captcha=" + captcha;
    
        requestPost.open("POST", "index.php", true);
        requestPost.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        requestPost.send(parameters);
        
        requestPost.onreadystatechange = function()
        {
            if(requestPost.readyState == 4 && requestPost.status == 200)
            {
                document.getElementById("divFormMail").innerHTML = requestPost.responseText;
                
                document.getElementById("divUploadFile").style.display = "none";
            }
            else
            {
                document.getElementById("formSendMail").innerHTML = "An error has occured making the request";
            }
        }
    }
    // AJAX
    
    

    Provando il codice in questo modo funziona ma ho dentro il divFormMail l'intera pagina index.php duplicate e quindi ne vedo due una al centro e l'altra dato che sta' nel div un po' spostata a destra e in basso...
    Nn mi e' chiara sta parte

    
    requestPost.onreadystatechange = function()
        {
            if(requestPost.readyState == 4 && requestPost.status == 200)
            {
                document.getElementById("divFormMail").innerHTML = requestPost.responseText;
                
                document.getElementById("divUploadFile").style.display = "none";
            }
            else
            {
                document.getElementById("formSendMail").innerHTML = "An error has occured making the request";
            }
        }
    
    

    Come faccio ad usare la stessa pagina index visto che le variabili POST stanno li? thanks!!


  • User

    Raga dai nessuno sa come fare? please...mi ci sto' scervellando!!


  • Super User

    Ciao CIMO,
    il comportamento che hai descritto è normale dato che carichi il contenuto di index.php sul div divFormMail.
    Anziché richiamare index.php richiama un altra pagina fatta ad hoc, per esempio rispostaform.php che contiene solamente il codice che vuoi venga inserito dentro divFormMail dopo l'elaborazione del form.