 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|