Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Ricezione dati Ajax

  1. #1

    Ricezione dati Ajax

    Salve a tutti.
    Mi trovo dinanzi ad un problema che mi sta donando amorevolmente molti grattacapi.
    Vi spiego velocemente il problema:
    ho creato un oggetto javascript per utilizzare ajax, in questo modo:

    codice:
    flc_ajax={
    
               /* INIZIALIZZAZIONE */
               start:function(){
    		   try { ajax=new XMLHttpRequest(); return ajax; }
    		   catch(e) { try{ ajax=new ActiveXObject('Msxml2.XMLHTTP'); return ajax; }
    		   catch(e) { try{ ajax=new ActiveXObject('Microsoft.XMLHTTP'); return ajax; }
    		   catch(e) { return alert("Il sito utilizza la tecnologia Ajax. Aggiorna il tuo browser per poterla utilizzare"); }
    			 	 }
    			   }
    			 },
    		   /* INVIO RICHIESTA */
    		   invia:function(x,y,z,j){ /* x tipo,y url, z sincrono o meno e j dati del post */
    		   ajax.open(x,y,z);
    		   x=="POST"?ajax.send(j):ajax.send();
    		   return;
    		    },
    		   /* RICEZIONE DATI */
    		   ricevi:function(p,i){
    		   ajax.onreadystatechange=function(){
    		   if(ajax.readyState==4){
    		   if(ajax.status==200){
    		   if(p) p; /*Azione in caso di successo */
    		   return ajax.responseText;
    		   }}
    		   else
    		   if(i) i; /*Azione in caso di insuccesso */
    		   }
    		   }
    		  
    		 }
    flc_ajax.start();
    Successivamente ho creato una piccola porzione di codice PHP per gestire il login:

    codice:
    if($_GET["richiesta"]=="login"){
    if($_GET["username"] && $_GET["pass"]){
    $user=$_GET["username"];
    $pass=$_GET["pass"];
    MySQL_connect("localhost","fantallenacalcio") or die("Errore MySQL");
    MySQL_select_db("my_fantallenacalcio") or die("Errore database");
    $query=MySQL_query("SELECT username,pass_conf FROM utenti WHERE username='".$user."' AND pass_conf='".$pass."';") or die("Errore query");
    if(MySQL_num_rows($query)==0)
    return 0;
    else{
    $_SESSION["username"]=$user;
    $_SESSION["pass"]=$pass;
    return 1;
    }
    }
    }
    Ho creato, poi, una pagina HTML, ecco la porzione che vi interessa:

    codice:
    <FORM NAME='form_l_r'>
    <TABLE BORDER='0px' class='table_top' style='float:left'>
    <TR>
    <TD>Username:</TD>
    <TD><INPUT TYPE='TEXT' class='stile_input' NAME='username'></TD>
    </TR>
    <TR>
    <TD>Password:</TD>
    <TD><INPUT TYPE='PASSWORD' class='stile_input' NAME='pass'></TD>
    </TR>
    <TR>
    <TD COLSPAN='2' ALIGN='CENTER' id='car_post_login'>
    <SPAN class='a_a_r'>
    <INPUT TYPE='button' VALUE='Accedi' onclick='login()'>
    </SPAN>
    <SPAN class='a_a_r_2'>
    [img]faq.png[/img]
    
    <DIV id='extra_fum_1'>
    <SPAN id='cont_extra_fum'>
    Recupero username
    
    Recupero password
    
    Problemi di accesso
    </SPAN>
    </DIV>
    </SPAN>
    </TD>
    </TR>
    </TABLE>
    Per concludere, ho creato, sotto l'oggetto javascript per ajax, una funzione per poter gestire l'accesso ma, a quanto pare, non mi restituisce completamente nulla:

    codice:
    function login(){
    var username=document.form_l_r.username.value;
    var password=document.form_l_r.pass.value;
    flc_ajax.invia("GET","richieste.php?richiesta=login&username="+username+"&pass="+password,"false");
    var risultato=flc_ajax.ricevi();
    alert(risultato);
    if(risultato)
    $(".div_cont").slideUp(1200).removeClass('div_cont').addClass('div_post_login').html("<SPAN id='titolo_sin'>Titolo</SPAN>").slideDown(1200);
    else
    alert("nulla. codice ancora da decidere");
    }
    La funzione alert che richiama il risultato lo inserita solo per controllare se, in effetti, ci fosse o meno un reale risultato (ho provato anche a cambiare i risultati della pagina php per il login) che non c'è (mi restituisce undefinited).
    L'oggetto flc_ajax sembra funzionare bene per quanto riguarda la registrazione, quindi escluderei il fatto che il problema sia dato da esso.

    Sono completamente nel pallone..mi sono "inceppato".
    Qualcuno sa darmi una mano?
    Il topic forse è un pò lungo ma vi assicuro che il codice è sempre da leggere e penso sia abbastanza comprensibile.

    Grazie mille e perdonatemi per la perdita di tempo.
    Cordiali saluti

    Marco

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Se è un'autenticazione e imposti solo sessioni (che di fatto sono reperibili dal client solo dopo l'aggiornamento della pagina) senza un echo che stampi qualcosa il response sara vuoto
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Salve grazie per la risposta.
    Ho cambiato (come già detto) varie volte la pagina php in questione, come ad esempio:

    codice:
    if($_GET["richiesta"]=="login"){
    if($_GET["username"] && $_GET["pass"]){
    $user=$_GET["username"];
    $pass=$_GET["pass"];
    MySQL_connect("localhost","fantallenacalcio") or die("Errore MySQL");
    MySQL_select_db("my_fantallenacalcio") or die("Errore database");
    $query=MySQL_query("SELECT username,pass_conf FROM utenti WHERE username='".$user."' AND pass_conf='".$pass."';") or die("Errore query");
    if(MySQL_num_rows($query)==0)
    echo "no";
    else{
    $_SESSION["username"]=$user;
    $_SESSION["pass"]=$pass;
    echo "si";
    }
    }
    }
    Ma i risultati "no" e "si" comunque non mi vengono visualizzati!
    Come posso fare?

    Grazie ancora.
    Marco

  4. #4
    UP

  5. #5
    Up

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    A) manca il form per la chiamata ajax?
    B) Meglio se metti un link alla pagina demo pubblica (tuosito.it/tuapaginademo.php)
    C) Se non usi ajax ed esegui una chiamata classica da action="paginalogin.php" form la pagina php processa esegue tutto senza errori o problemi?
    D) Hai provato a inserire degli alart nella classe flc_ajax per capire se tutti gli step vengono eseguiti?
    F) Hai provato ad usare funzioni singole per eseguire la chiamata al posto della classe? (in rete trovi)
    Gli UP servo a poco, più info dai maggiori possibilità avrai di risolvere
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.