Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Probleme Ajax...
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Subiectul anterior :: Subiectul următor  
Autor Mesaj
adyre



Data înscrierii: 06/Dec/2004
Mesaje: 440
Locație: Buzau

Trimis: Vin Oct 12, 2007 3:29 pm    Titlul subiectului: Probleme Ajax...  

Am fisierul: newsletter.php
Cod:
<script language="javascript" type="text/javascript">
function getData(fisier){
    if(XMLHttpRequestObject) {
         XMLHttpRequestObject.open("POST", fisier);
         XMLHttpRequestObject.onreadystatechange = function () {
             if(XMLHttpRequestObject.status == 200) {
                var catreMesaj = document.getElementById("mesaj");
                catreMesaj.innerHTML = "<div>" + XMLHttpRequestObject.reponseText; + "</div>";
             }
         }
    XMLHttpRequestObject.send(null);
    }
}

function adaugaNewsletter() {
     var catreMesaj = document.getElementById("mesaj");
     catreMesaj.innerHTML = "<div></div>";
     if(document.getElementById("email").value) {
          getData("news_add.php");
     }
}
</script>

<div id="mesaj">aaa</div>
form action="#" method="post" onSubmit="return adaugaNewsletter();">
Adresa e-mail:<br>
<input type="text" class="input_text" style="width: 175px;" name="email" id="email">
<input type="image" src="trimite.gif"></center>
</form>


Si fisierul PHP news_add.php:
Cod:
include("connect.php");
if(empty($HTTP_POST_VARS)) {
    echo "<meta http-equiv=\"refresh\" content=\"0; url=" . $domain . "\">";
}
else {
    $email = strip_tags($_POST['email']);
    //VERIFICARE DACA ADRESA DE E-MAIl ESTE CORECTA
    DEFINE('VERIFICA_MAIL',eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email));
    if(VERIFICA_MAIL == FALSE) {
       echo "ADRESA INVALIDA";
    } else {
    $sql = mysql_query("SELECT * FROM newsletter WHERE email='" . $email . "'") or die ("Nu s-a putut realiza verificarea!");
    if(mysql_num_rows($sql) != '0') {
       echo "ADRESA DE E-MAIL EXISTENTA IN BAZA DE DATE!";
} else {
    $sql_ip = mysql_query("SELECT dataReg, IP FROM newsletter WHERE ADDTIME(dataReg, '00:03:00')>'" . date('H:i:s') . "' AND data='" . date('Y-m-d') . "' AND IP='" . $_SERVER['REMOTE_ADDR'] . "'") or die ("Nu s-a putut realiza verificarea!");
    if(mysql_num_rows($sql_ip) != '0') {
        echo "NU SE POATE REALIZA DE PE ACEST CALCULATOR DECAT O INREGISTRARE LA FIECARE 3 MINUTE!";
} else {
    mysql_query("INSERT INTO newsletter (email, data, dataReg, IP) VALUES('" . $email . "', NOW(), NOW(), '" . $_SERVER['REMOTE_ADDR'] . "')") or die ("MAILUL DUMNEAVOASTRA NU A PUTUT FI INTRODUS IN BAZA DE DATE!");
    echo "INSCRIERE REALIZATA CU SUCCES!";
}
}
}
}


E posibil ca PHP-ul sa nu fie corect... ca l-am aranjat acum sa arate bine (era cu TAB identat si se insira pe distanta mare)....

Nush unde e buba ca nu mere.. Daca fac normal cu action="fisierulphp" merge perfect insa eu vreau ca acele rezultatele sa le afiseze in div-ul meu.. where is THE PROBLEM?

PS: Daca o sa fie vreo explicatie, va rog mai pe indelete ca sunt newbie in Ajax

Multam anticipat!
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 656
Locație: Drobeta Turnu Severin

Trimis: Vin Oct 12, 2007 10:21 pm    Titlul subiectului:  

Nu stiu care-i cauza, cred ca nu merge la onSubmit sa se actioneze prin intermediul obj. XMLHttpRequest pentru ca browserul executa si "action".
Trebuie sa setam noi header-ul: XMLHttpRequest.setRequestHeader(..)

Asa merge:
Fisierul newsletter.htm :

<script language="javascript" type="text/javascript">

function getData(url, ele, str) {
var xmlHttp=null;
try { xmlHttp=new XMLHttpRequest();
} catch (e) {
try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
if (xmlHttp==null) {
alert ("Acest browser nu suporta HTTP Request");
return ;
}
xmlHttp.onreadystatechange= function() {
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
document.getElementById(ele).style.visibility = 'visible';
document.getElementById(ele).innerHTML=xmlHttp.responseText;
} else {
document.getElementById(ele).innerHTML = "Asteptati !";
}
}
xmlHttp.open('POST', url, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlHttp.setRequestHeader("Content-Length", str.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(str);
}


function adaugaNewsletter() {
if(document.getElementById("email").value) {
getData("news_add.php","mesaj","email="+document.getElementById("email").value);
}
}
</script>

<div id="mesaj">aaa</div>
<form action="#" method="post">
Adresa e-mail:<br>
<input type="text" class="input_text" style="width: 175px;" name="email" id="email">
<input type="button" value="Trimite" onClick="adaugaNewsletter();" />
</form>


Fisierul news_add.php l-am scurtat:

<?php
$email = strip_tags($_POST['email']);
echo "Emailul $email a fost adaugat !!!";
?>
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 656
Locație: Drobeta Turnu Severin

Trimis: Vin Oct 12, 2007 10:37 pm    Titlul subiectului:  

Revin, ideea AJAX este sa nu facem submit ci sa actualizam pagina fara a o trimite serverului ca sa o schimbe cu alta.
Mai usor este cu GET, oricum nu apare nimic in campul "Address".
Sus  
adyre



Data înscrierii: 06/Dec/2004
Mesaje: 440
Locație: Buzau

Trimis: Vin Oct 12, 2007 10:44 pm    Titlul subiectului:  

Thanks.. asta era... Nu-i problema la news_add ca acolo lucrez eu...

Ms mult...
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 656
Locație: Drobeta Turnu Severin

Trimis: Sâm Oct 20, 2007 11:53 am    Titlul subiectului:  

adyre,
In topicul "Firefox afiseaza raspuns Ajax, Internet Explorer nu"
( http://www.phpromania.net/forum/viewtopic.php?t=8218 )
"agoia" a avut problema si a gasit rezolvare.
Am imbunatatit si eu functia getData(), asa cum se spune acolo,
pentru a forta IE sa faca request chiar daca cererea este identica cu precedenta.
In fata liniei:
Cod:  xmlHttp.open('POST', url, true);
am introdus :
Cod:
if (url.indexOf('&')>0) varx='&'; else varx='?';
url += varx+"&xyxyxy="+(Math.floor(Math.random()*9999999)).toString();

Se trimite o variabila a carei valoare se modifica la fiecare request.
M-am gandit ca-i bine sa o ai in arsenal, vad ca altii sapa cu mult inaintea noastra si de ce sa nu invatam.
Chiar e bun forumul asta!
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community