Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    AJAX, problema con lettura da input text

    ciao a tutti, ho il seguente problema con ajax...
    Ho una pagina scritta così:

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" >
    <head>
    <title>AJAX</title>
    <script type="text/javascript" src="utility.js"></script>
    <script type="text/javascript"><!--//
    
    function caricaTesto() {
    
    
      var
      
        ajax = assegnaXMLHttpRequest(),
        email=prendiElementoDaId("mail"),
        msg=prendiElementoDaId("msg");   
        
        if(ajax){
        
        usaLink = false;
       
        ajax.open("get", "findmail.php?mail=" + email, true);
    
        ajax.setRequestHeader("connection", "close");
    
        ajax.onreadystatechange = function() {
          
          
          if(ajax.readyState === readyState.COMPLETATO) 
          {
           
            if(statusText[ajax.status] === "OK"){
            
               
                     
               var phpcode = ajax.responseText;
              
               msg.innerHTML = phpcode;
              }
              else
    					msg.innerHTML = "Impossibile effettuare l'operazione richiesta.
    " + "Errore riscontrato: " + statusText[ajax.status];
    
              
              
          } 
          
          		
    
        }
        
        ajax.send(null);
    	    
       }
       return usaLink; 
    }
    
    //--></script>
    
    </head>
    <body>
    <div>
    	<h1>Request Testuale</h1>
    
    		<div id="form1">
    		
    		
    
    			<input type="text" id="mail" />
    			<input type="submit" onclick="caricaTesto();" />
    
    			</div>
    
    
    
    			<div id="msg">
    
    			</div>
    			
    			<div style="color:green;" id="mailver"></div>
    			
    		</div>
    </body>
    </html>
    Ora, la variabile email risulta essere un oggetto vuoto, invece dovrebbe contenere il contenuto dell'input text al momento del click sul pulsante...con IE7 mi da come risultato [object], con chrome [object HTMLInputElement].

    Che devo fare? Cosa sbaglio?


    Grazie in anticipo...

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Nella variabile mail valorizzi solo elemento input non il suo valore fai cosi:
    ajax.open("get", "findmail.php?mail=" + email.value, true);
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Grazie per la pronta risposta...in effetti il problema è stato risolto con quel .value alla fine...

    Adesso però ho quest'altro problema.

    Ho una pagina che visualizza le email di un db. Ogni email di questo db deve essere cliccabile, al click si dovrebbe aprire qualcosa.

    Posto il codice e poi spiego cosa non va:

    1) index.php
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" >
    <head>
    <title>::: AJAX :::</title>
    <script type="text/javascript" src="utility.js"></script>
    <script type="text/javascript" src="ajax.js"></script>
    </head>
    
    <body>
    
    <div>
    	<h1>AJAX</h1>
    	<div id="main">
    	
    		<div id="userlist">
    		<?php include("userlist.php"); ?>
    		</div>
    	
    	</div>
    			
    </div>
    
    
    </body>
    </html>
    2)userlist.php

    Codice PHP:
    <?php

    include("connessione.php");

    $query "SELECT * FROM email";
    $risultato mysql_query($query,$connessione) or die (mysql_error());


    while (
    $rigamysql_fetch_assoc($risultato)) //ciclo singolo
    {
        
    $mail=$riga["email"];
        
    $textarea=$mail."TA";

        
        echo 
    "<div id=\"$mail\" onclick=\"CaricaTextArea($mail,$textarea);\" />[b][i]$mail[/i][/b]</div>
    <div id=\"
    $textarea\"></div><hr></hr>";
        
    }

    ?>

    3)Funzione CaricaTextArea dentro ajax.js

    codice:
    function CaricaTextArea(mail,textarea) {
    
    
      var
      
        ajax = assegnaXMLHttpRequest(),
        mail = prendiElementoDaId(mail),
        textarea = prendiElementoDaId(textarea);   
        
     
       if(ajax){
        
        usaLink = false;
       
        ajax.open("get", "text.php?mail=" + mail.value, true);
    
        ajax.setRequestHeader("connection", "close");
    
        ajax.onreadystatechange = function() {
          
          
          if(ajax.readyState === readyState.COMPLETATO) 
          {
           
            if(statusText[ajax.status] === "OK"){
                   
               var phpcode = ajax.responseText;
              
               textarea.innerHTML = phpcode;
    
              }
              else
    		   
    		   textarea.innerHTML = "Impossibile effettuare l'operazione richiesta.
    " + "Errore riscontrato: " + statusText[ajax.status];
    
              
              
          } 
          
          		
    
        }
        
        ajax.send(null);
    	    
       }
       return usaLink; 
    }
    Non posto il file text.php perchè ancora devo scriverlo, tuttavia mettendo solo un echo visualizzando il parametro get [mail] non mi esce un bel niente...mi dice variabile undefined quando uso il .value, mi spunta object quando non metto il value...

    Inoltre ho notato che i parametri passati alla funzione ajax non li legge (non si possono manipolare, in lettura e scrittura, div con id creati dinamicamente come in questo caso???)

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Secondo me il problema è qui:
    Codice PHP:
    $mail=$riga["email"];
        
    $textarea=$mail."TA";

        
        echo 
    "<div id=\"$mail\" onclick=\"CaricaTextArea($mail,$textarea);\" />[b][i]$mail[/i][/b]</div>
    <div id=\"
    $textarea\"></div><hr></hr>"
    la variabile mail cos'è? la stessi la usi sia per id che x la funzione :master:
    ti ricordo che i parametri nelle funzioni vanno racchiuse tra gli apici mifunzione('mioparametro') utilizzando appropriatamente le barre (backslah) in base al linguaggio server che si usa e che gli id non possono iniziare con dei numeri <div id="1"></div> (sbagliato) <div id="_1"></div> (corretto).


    P.S.Qui sul forum js non tutti conoscono il php (ad esempio il sottoscritto) e confonde la lettura, oltretutto è ininfluente al client e al javascript che tu usa php invece che asp dato che sono due ambienti diversi, pertanto in futuro posta solo html come la riceve il browser.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Ho fatto qualche modifica dovuta al tuo suggerimento...adesso il meccanismo di apertura dei div al click funziona...parte anche lo script lato server (che dovrebbe stampare a video il parametro passato)...Il problema è che stampa il solito valore undefined (con email.value) oppure object con (email senza .value)....

    Ora ipotizzo che il problema non sta nel passaggio di parametri alla chiamata ajax, sennò i div textarea non me li avrebbe aperti al click (reindirizzandoli correttamente in base al click)... Ci deve essere qualche errore nel passaggio del parametro mail... :master:

    Come posso vedere cosa contiene questa variabile da js?

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma che conoscenza hai di js? A quanto vedo molto poca, non tutti hanno la pazienza di farti da tutor ti riscrivo la funzione, poi però devi metterci del tuo:
    codice:
    function CaricaTextArea(mail,textarea) {   
       if(ajax){
        usaLink = false;
       /*per verificare i parametri passati inserisci degli alert nella funzione*/
        ajax.open("get", "text.php?mail=" + mail, true);
    
        ajax.onreadystatechange = function() {
          
          if(ajax.readyState === readyState.COMPLETATO) 
          {
           
            if(statusText[ajax.status] === "OK"){
                   
               var phpcode = ajax.responseText;
              
               textarea.innerHTML = phpcode;
              }
              else 
    		   textarea.innerHTML = "Impossibile effettuare l'operazione richiesta.
    " + "Errore riscontrato: " + statusText[ajax.status];
    
          } 
    
        }
        
        ajax.send(null);
    	    
       }
       return usaLink; 
    }
    js non lo puoi copia/incollare devi sapere cosa fai altrimenti non funziona e non ne capisci il motivo parti da qui
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Ti ringrazio, anche se non era una mia pretesa che qualcuno mi insegnasse JS... infatti avevo chiesto solo lumi riguardo quel parametro che viene passato male alla funzione ajax, proprio perchè non sono esperto di JS e mi sto avvicinando ad ajax...

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.