Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380

    [ajax+php] select + validation form

    Ciao a tutti, sto cercando di effettuare una validazione di un form che viene visualizzato dopo aver selezionato una scelta in una select:
    1 - seleziono la select
    2- visualizzo (in modo asincrono) la scelta effettuata insieme ad un form di registrazione
    3- valido il form in modo asincrono: non mi compaiono i messaggi relativi alla validazione (questo è il mio problema)

    Cerco di illustrarlo:

    1- per visualizzare la scelta effettuata sulla select utilizzo la seguente funzione:
    codice:
    <script type="text/javascript">
    function showUser(str)
    {
    if (str=="")
      {
      document.getElementById("txtHint").innerHTML="";
      return;
      }
    if (window.XMLHttpRequest)
      {
      xmlhttp=new XMLHttpRequest();
      }
    else
      {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","selezionato.php?q="+str,true);
    xmlhttp.send();
    }
    </script>
    con il form responsabile della select:
    codice:
    <form id="input_event" action="?">
    	<select name="users" onchange="showUser(this.value)">
    		   <option value="">Seleziona</option>
    		   <option value="scelta uno">scelta uno</option>
    		   <option value="scelta due">scelta due</option>
        </select>
    </form>
    fin qui tutto ok, il file "selezionato.php" mi visualizza la scelta insieme al form che dovrò validare:
    2
    codice:
    <script type="text/javascript">
        $(document).ready(function() {
    	$("#input_form").submit(function(){
    	var nome = $("#nome").val();
    	//chiamata ajax
        $.ajax({
         //imposto il tipo di invio dati (GET O POST)
          type: "POST",
    	//invio i dati recuperati dal form
        url: 'risultato.php',
    	//Quali dati devo inviare?
        data: "nome="+nome,
    	//Inizio visualizzazione errori
    	  success: function(msg) {
            $("div#result").html(msg);
      },
    		      error: function()
          {
            alert("Chiamata fallita...");
          }
    });return false;
    });    
    	});
    </script>
    <?php
    $q=$_GET["q"];
    echo $q; /* visualizzo la scelta effettuata */
    ?>
    
    <div id="result"></div>
    
    <form id="input_form" action="?">
        Nome:  <input type="text" name="nome" id="nome"/>
        <input type="submit" value="invia" class="button">
    </form>
    3 - A questo punto arriva il mio problema.
    Vorrei validare la variabile "nome" , se cerco semplicemente di visualizzarla mediante il seguente codice del file risultato.php (richiamato dallo script):
    Codice PHP:
    $nome htmlspecialchars ($_POST['nome']) ;
    echo 
    $nome
    non succede nulla! cioè, mi punta sul file seleziona.php in questo modo: seleziona.php?nome=
    (invece non dovrei visualizzare la variabile "nome" nella barra indirizzi e tanto meno il suo contenuto!) e scompare il form (dovrebbe comparire il valore della variabile)

    Prima di implementare il tutto ho testato singolarmente:
    il file che gestisce la select e la sua visualizzazione e il file che valida il form, tutto funziona correttamente.
    Il problema si crea quando metto insieme le due cose: select+validazione form.

    C'è sicuramente qualcosa che mi sfugge, confido in un vostro aiuto.
    Grazie a tutti.
    If you think your users are idiots, only idiots will use it. DropBox

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    ancora sono nel tunnel
    If you think your users are idiots, only idiots will use it. DropBox

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Se non riesci ad uscire dal tunnel... arredalo!
    Scherzi a parte (non la trasmissione) prova e mettere un link pubblico per simulare il problema, forse cosi hai maggiori aiuti.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    Grazie Andrea per il "duplice" consiglio
    vediamo come illustrare meglio il mio "tunnel" inserendo i link ai file in questione.
    Allora, il file getselect.php
    raggiungibile da http://www.ambientevivo.it/webajax/getselect.php
    permette di eseguire la select e visualizzarne il risultato
    codice:
    <script type="text/javascript">
    function showUser(str)
    {
    if (str=="")
      {
      document.getElementById("txtHint").innerHTML="";
      return;
      }
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","getuser.php?q="+str,true);
    xmlhttp.send();
    }
    </script>
    
    </head>
    <body>
    <form name="input_event" action="?" >
    <select name="users" onchange="showUser(this.value)" >
    <option value="">Seleziona Evento:</option>
    <option value="scelta uno">scelta uno</option>
    <option value="scelta due">scelta due</option>
    <option value="scelta tre">scelta tre</option>
    </select>
    </form>
    
    
    <div id="txtHint">valore della select</div>
    nel codice javascript viene aperto: xmlhttp.open("GET","getuser.php?q="+str,true);
    visibile qui http://www.ambientevivo.it/webajax/getuser.php
    getuser.php :
    codice:
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
    	$("#input_form").submit(function(){
    	$(".button").attr("disabled", "disabled");
    	$(".loading").show();
    
    	var nome = $("#nome").val();
    	//chiamata ajax
        $.ajax({
         //imposto il tipo di invio dati (GET O POST)
         type: "POST",
        url: 'result.php',
        data: "nome="+nome,
    	
    	  success: function(msg) {
            $("div#result").html(msg);
            $(".button").removeAttr("disabled");
            $(".loading").hide();
      },
    		      error: function()
          {
            alert("Chiamata fallita"); //sempre meglio impostare una callback in caso di fallimento
          }
    });return false;
    });    
    	});
    </script>
    
    <?php
    $q=$_GET["q"];
    echo $q;
    ?> 
    
    <form id="input_form" action="?">
    
    
        Nome:
    
        <input type="text" name="nome" id="nome"/><br/ >
        <input type="submit" value="invia" class="button">
    </form>
    <div id="result"></div>
    il quale chiama il file result.php:
    Codice PHP:
    <?php
    $nome 
    htmlspecialchars ($_POST['nome']) ;
    echo 
    '<div>'.$nome.'</div>';
    ?>
    Le due chiamate (select e validazione form) funzionano correttamente se chiamate singolarmente, invece io vorrei validare il form che compare subito dopo aver effettuato la select.
    Per capirci, selezionata una voce da http://www.ambientevivo.it/webajax/getselect.php
    compare la select ed il form, se provo a validarlo...
    Grazie per l'attenzione
    If you think your users are idiots, only idiots will use it. DropBox

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.