Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365

    [PHP - JavaScipt - AJAX] controllo utente

    salve

    muoviamo un po i primi passi verso questo nuovo modo di fare web... AIAX ho preso spunto da un utilissimo articolo
    e sono riuscito a fare un po di cose...

    questo è il codice javascript

    <script language="javascript">function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
    ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
    ro = new XMLHttpRequest();
    }
    return ro;
    }

    var http = createRequestObject();

    function sndReq(action) {
    http.open('get', 'controllo_nick.php?action='+action);
    http.onreadystatechange = handleResponse;
    http.send(null);
    }

    function handleResponse() {
    if(http.readyState == 4){
    var response = http.responseText;
    alert(response);
    }
    }
    </script>


    questo è il codice php


    <?

    include("../include/connessione_database.php");

    $valore = $_REQUEST['action'];

    $query_username = mysql_query("SELECT id FROM utenti WHERE username = '$valore'");

    if(list($id_utente) = mysql_fetch_row($query_username))
    print("esiste");
    else
    print("non esiste");
    ?>

    e questo è il semplice codice html

    <form name="form">
    <input type="text" name="username">
    <input type="button" onClick="javascript:sndReq(document.form.username. value)" value="controlla">
    </form>

    il tutto funziona alla perfezione infatti se l'utente esiste allora l'alert stamperà esiste altrimenti stamperà non esiste

    noi chiamiamo la funzione sendReq che a sua volta chiama una pagina php che fa dei print; questi print vengono intercettati dalla funzione handeleResponse e possono essere utilizzati

    ad esempio io passo un valore di un username a sndReq questa controlla lato server se sul database quel'utente esiste e poi mi stampa un alert

    il problema che ora mi pongo è questo

    in realtà la funzione handleRepsponse nn viene mai chiamata, quindi nn possiamo mettere un return... e di conseguenza nn possiamo nemmeno fare qualcosa del tipo

    var = sndRep(qualcosa) xkè in realtà nemmeno sndRep ha un return

    fai una chiamata http tramite js, lui fa la chiamata e delega la gestione della risposta ad un'altra funzione.. delegata la gestione della risposta esce.

    Quando la chiamata http è finita, js richiama la funzione che avevi associato alla gestione della risposta.

    Questo è un paradigma di programmazione che si chiama appunto “Inversion of Control”, non è piu l’applicazione principale che mantienila logica di business (logica applicativa) ma la funzione delegata.

    non hai modo ovviamente di ricevere nulla da handleResponse perché tu non l’hai mai chiamata!! (Che paradosso!)

    c'è qualche altro modo per ottenere risultati da questa funzione?

    GRAZIE

  2. #2
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    nessuno mi aiuta?

  3. #3
    forse sarà l'ora, am non ho capito dove vuoi arrivare a parare.

    Errare e' umano, ma per fare veramente casino serve la password di root.
    Coltiva Linux........Tanto windows si impianta da solo!!!!!
    PHP 4 Ever

  4. #4
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    azz quindi nn p chiaro

  5. #5
    spiegami meglio, visto che lo script và, qual'è il tuo prob?

    Errare e' umano, ma per fare veramente casino serve la password di root.
    Coltiva Linux........Tanto windows si impianta da solo!!!!!
    PHP 4 Ever

  6. #6
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    va ma il controllo va fatto nella funzione reponse a me servirebbe un return

  7. #7
    a cosa ti serve un return?? quello che devi fare fallo direttamente nella funzione...
    www.gext.it

  8. #8
    Utente di HTML.it L'avatar di coteaz
    Registrato dal
    Mar 2006
    Messaggi
    365
    tutto quesa discussione e tutto questo papiello x dire nn si puo fare un unica funzione?

    io chiamo la funzione x, questa mi chiama la pagina php poi il risultato lo mette in un valore e me lo restituisce con il return

    nn si puo fare così invece che fare 2 funzioni? una che chiama il php e una che interpreta la risposta?

    xkè sono costretto a fare tutto il controllo e tutto quello che devo fare nella funzione che elabora la risposta...

    questo è quello che vorrei

    ho fatto delle prove ma credo nn si possa fare anche xkè tutti gli esempi che ho trovato vanno così con 2 funzioni

    grazie

  9. #9
    che io conoscsa, ammeno ceh tu non riesca a leggere dei dati nella pagina html stampata non c'è modo, il return frà php e javascript non l'ho mai visto.

    Errare e' umano, ma per fare veramente casino serve la password di root.
    Coltiva Linux........Tanto windows si impianta da solo!!!!!
    PHP 4 Ever

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.