Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    46

    ajax e php: ottenere una variabile

    Salve a tutti.
    Ho realizzato una pagina con un form. Il client invia il contenuto del form (peraltro un unico input text) ad una pagina php (con method post) tramite ajax (scritta in un file js). Nel file php elaboro il contenuto del form e setto un flag. Come faccio a prelevare il contenuto di tale flag dal file js? Spero di essermi spiegato...

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    nel php ti basta fare un echo del flag, nel js devi recuperare la responseText dell'oggetto XMLHttpRequest, in rete trovi moltissimi esempi

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    46
    mmm... sì, pensavo anch'io al responceText... ma in pratica devo ottenere tutto il testo, fare il parse e poi prendere la variabile che m'interessa? O c'è un modo per selezionare proprio il flag?

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da apokalos
    mmm... sì, pensavo anch'io al responceText... ma in pratica devo ottenere tutto il testo, fare il parse e poi prendere la variabile che m'interessa? O c'è un modo per selezionare proprio il flag?
    Quale tutto? fatti restituire solo il flag
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    46
    chiedo troppo se vi dico "come si fa"?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    perchè non posti il sorgente della tua richiesta asincrona?

    In ogni caso come ti hanno già detto nella parte php per ottenere solo il flag basta assicurarsi che in output dai solo quello.
    Per il resto basta lavorare nella parte ajax, se la posti sicuramente riceverai aiuto in poco tempo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    46
    certo! Questo è il form client.php

    codice:
    <form name="form" id="form" action="../server.php" method="post" onsubmit="f_submit();"> 
        <input id="pulsante1" value="pulsante1" type="button"/> 
        <input id="input" name="contenuto" type="text" style="width: 300px; text-transform: uppercase;"/> 
    <input value="rispondi" id="button" type="submit"/> </form> 
    
    <div id="prova"></div>
    Adesso qui c'è la funzione per l'ajax.js:

    codice:
    function f_submit(){ 
        var ajax = assegnaXMLHttpRequest(); //assegna richiesta in base al browser
        var contenuto= "contenuto="+$("#input").val(); 
        var prova = $("#prova"); 
        alert("ciao"); 
        if(ajax) { 
            ajax.open("post", "../server.php", true); 
            ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
            ajax.onreadystatechange = function() { 
            if(ajax.readyState === readyState.COMPLETATO) { //ho un array che contiene gli statusText
                alert(statusText[ajax.status]); 
                if(statusText[ajax.status] === "OK") { 
                    alert("ok"); 
                    alert(ajax.responseText); 
                    prova.innerHTML = ajax.responseText; 
                } 
                else { 
                    alert("ko"); 
                    prova.innerHTML = "Impossibile effettuare l'operazione richiesta.
    "; 
                    prova.innerHTML += "Errore riscontrato: " + statusText[ajax.status]; 
                } 
            } 
        } 
        ajax.send(contenuto); 
    }
    e infine ecco il server.php

    codice:
    <?php 
        $contenuto=$_POST["contenuto"]; 
        $contenuto=strtoupper($contenuto); 
        $frasi=array("frase1", 
                         "frase3", 
                         "frase3", 
                         "frase4"); 
        $flag=0; 
        for($i=0; $i<count($frasi); $i++) { 
            if($frasi[$i]==$contenuto) 
                $flag=1; 
        } 
    ?>
    Una cosa strana... se tolgo il alert("ciao") non mi entra nell'if e mi da come output "ko"... penso ci siano una miriade di errori... datemi una mano! :S

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    fammi capire una cosa, tu usi jquery e fai la richiesta asincrona in quel modo?

    Partiamo dal codice php:

    Codice PHP:

    <?php 
        $contenuto
    =$_POST["contenuto"]; 
        
    $contenuto=strtoupper($contenuto); 
        
    $frasi=array("frase1"
                         
    "frase3"
                         
    "frase3"
                         
    "frase4"); 
        
    $flag=0
        for(
    $i=0$i<count($frasi); $i++) { 
            if(
    $frasi[$i]==$contenuto
                
    $flag=1
        } 
        
    //unica aggiunta
        
    echo flag;
    ?>

    Richiesta asincrona fatta con jquery sostituisce tutto ciò che hai scritto nella parte javascript:

    codice:
    $.ajax(
       type: "POST",
       url: "../server.php",
       data: ({"contenuto":$("#input").val()}),
       success: function(data){
          $("#prova").text(data);
       },
       error: function(a, b, c){
          alert(b);
       }
       
    )

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    46
    veramente ho trovato il codice e l'ho adattato ai miei bisogni... in pratica tu crei un oggetto ajax inizializzato in quel modo lì? E dovrei sostituire tutto quello che ho scritto nel js con quel codice, no? Potresti spiegarmelo in breve per favore?

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    si basta cambiare tutto quello che sta tra le parentesi graffe dopo function f_submit()... quindi:

    codice:
    function f_submit(){ 
     $.ajax(
       type: "POST", //invii con post
       url: "../server.php", //all'indirizzo
       data: ({"contenuto":$("#input").val()}), //passando
       success: function(data){
          $("#prova").text(data); //se hai successo scrivi il valore del flag in #prova
       },
       error: function(a, b, c){
          alert(b); //se si verifica un errore ne dai l'alert
       }
       
     )
    }
    Leggi i commenti dovrebbe, se il tuo script doveva fare quello che è descritto nei commenti sei apposto.

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.