butoane cu refresh ajax

Discutii legate de AJAX, jQuery, MooTools, Prototype, Dojo, Yahoo! UI Library,script.aculo.us, ExtJS,AngularJS, Backbone.js, Ember.js, KnockoutJS

Moderator: Moderatori

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

butoane cu refresh ajax

Mesajde sebyku » Dum Ian 17, 2010 9:16 pm

salut tuturor ... ma chinui la ceva ce nu prea reusesc mai ales cu ajax .. am incercat si niste lectii de tutoriale dar nu imi da ceea ce vreau eu ... de exemplu este pe site-ul asta http://www.pretbomba.ro/Default.aspx?p=1&id=12710 cand da cineva click pe butonu ala ofera apare instant in lista aia de useri cel care a licitat sau ce e acolo si se aduna si la suma de mai sus ... eu tot ce am reusit sa fac e sa apas pe un buton ca sa se reactualizeze lista de useri fara un refresh dar singura nu se actualizeaza....



alexandru_24
Senior Member
Mesaje: 261
Membru din: Mar Iul 11, 2006 11:27 am
Localitate: Bucuresti
Contact:

Mesajde alexandru_24 » Dum Ian 17, 2010 9:45 pm

Ceea ce au ei acolo, este foarte simplu. Iti recomand sa vezi cateva exemple jQuery. Si eu am un script facut cu jQuery in magazinul meu. Daca un produs beneficiaza de cel putin o optiune, si aceasta optiune are un plus in valoare, in momentul in care userul selecteaza acea optiune, ii afisez pretul instant. Mai pe scurt, cauta in documentatia jQuery, metoda $.get sau $.post. Succes
am un magazin online de baterii laptop www.baterii-laptop.com.ro si unul de gadgeturi, accesorii telefoane mobile, etc... www.abshop.ro

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Dum Ian 17, 2010 10:29 pm

pai eu am facut ceva de genu cu post ....

Cod: Selectaţi tot

<script type="text/javascript">
<!--
// Functia care verifica si creaza obiectul XMLHttpRequest in functie de browser
function get_XmlHttp() {
  // Creaza variabila care va contine instanta la XMLHttpRequest, initial cu valoare nula
  var xmlHttp = null;

  if(window.XMLHttpRequest) {      // Daca browser-ul e Forefox, Opera, Safari, ...
    xmlHttp = new XMLHttpRequest();
  }
  else if(window.ActiveXObject) {   // Daca browser-ul este Internet Explorer
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  return xmlHttp;
}

// Functia care trimite datele la un fisier PHP si returneaza raspunsul
function ajaxrequest(tagID) {
  var cerere_http =  get_XmlHttp();      // Apeleaza functia pt. crearea instantei la obiectul XMLHttpRequest

  // Creaza datele care trebuie trimise prin POST la scriptul PHP (perechi nume=valoare)
  var  datele = 'test='+document.getElementById(tagID).innerHTML;

  cerere_http.open("POST", 'test_post.php', true);         // Creaza cererea

  // Adauga un Header specific pentru ca datele sa fie recunoscute ca au fost trimise prin POST
  cerere_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  cerere_http.send(datele);      // Efectueaza trimiterea cererii, impreuna cu valorile care trebuie transmise

  // Verifica starea cererii
  // Daca raspunsul e primit complet, il transfera in eticheta HTML cu id-ul din "tagID"
  cerere_http.onreadystatechange = function() {
    if (cerere_http.readyState == 4) {
      document.getElementById(tagID).innerHTML = cerere_http.responseText;
    }
  }
}
//-->
</script>
si afisam cu

Cod: Selectaţi tot

<h5 style="cursor:pointer;" onclick="ajaxrequest('context')">Click</h5>
dar daca se inregistreaza o noua inserare in db doar daca dau click se actualizeaza si nu singur.....

MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Mesajde MarPlo » Lun Ian 18, 2010 9:09 am

Cand se face o noua inserare in db, la ce actiune? La aceeasi actiune faci sa se apeleze si functia respectiva.
Daca inserarea se face din alta pagina sau alt utilizator, trebuie sa faci o apelare continua, repetata, a functiei care preia si afiseaza datele, cu setTimeout() sau setInterval().

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Lun Ian 18, 2010 11:42 am

momentan am un form cu care inserez in db

Cod: Selectaţi tot

if(isset($_POST['B1'])) {
   if ($credite > 0) {
$insertrez = mysql_query("INSERT INTO licitatori ( id_user, username, id_produs, suma ) VALUES ('{$id}','{$username}','{$id_prod}','{$sumanoua}')");
mysql_query("UPDATE users SET credite='$creditenoi' WHERE username='$username'");
dar cred ca trebuie sa fac altfel ca sa nu imi dea refresh la pagina ... pana acu am pus

Cod: Selectaţi tot

<body onload=setinterval("ajaxrequest('context')",100);>
si in js

Cod: Selectaţi tot

  // Daca raspunsul e primit complet, il transfera in eticheta HTML cu id-ul din "tagID"
  cerere_http.onreadystatechange = function() {
    if (cerere_http.readyState == 4) {
      document.getElementById(tagID).innerHTML = cerere_http.responseText;
    }
   setTimeout("ajaxrequest('content',1000);
  }
si ceva scapa...

MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Mesajde MarPlo » Lun Ian 18, 2010 1:19 pm

In BODY adaugi onload="functia()" (fara setinterval), apoi in acea functie adaugi setTimeout() la aceeasi functie.

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Lun Ian 18, 2010 1:44 pm

ok deci am body

Cod: Selectaţi tot

<body onload="ajaxrequest('context')";>
si js

Cod: Selectaţi tot

function ajaxrequest(tagID) {
  var cerere_http =  get_XmlHttp();
      // Apeleaza functia pt. crearea instantei la obiectul XMLHttpRequest

  // Creaza datele care trebuie trimise prin POST la scriptul PHP (perechi nume=valoare)
  var  datele = 'test='+document.getElementById(tagID).innerHTML;

  cerere_http.open("POST", 'test_post.php', true);         // Creaza cererea

  // Adauga un Header specific pentru ca datele sa fie recunoscute ca au fost trimise prin POST
  cerere_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  cerere_http.send(datele);      // Efectueaza trimiterea cererii, impreuna cu valorile care trebuie transmise

  // Verifica starea cererii
  // Daca raspunsul e primit complet, il transfera in eticheta HTML cu id-ul din "tagID"
  cerere_http.onreadystatechange = function() {
    if (cerere_http.readyState == 4) {
      document.getElementById(tagID).innerHTML = cerere_http.responseText;
    }
   setTimeout(10);
  }
}
unde am pus timeout cat mai mic ... si avisarea o fac cu <div id="context"></div> imi apar userii da nusi face refresh cand se liciteaza ...

MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Mesajde MarPlo » Lun Ian 18, 2010 3:40 pm

setTimeout se foloseste asa:
setTimeout("functie()", 1000);

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Lun Ian 18, 2010 5:43 pm

numi iese si nu imi iese ... am luat exemplul asta de pe net

Cod: Selectaţi tot

moreSnow();
function moreSnow() {
// content of moreSnow function
setTimeout("moreSnow()", speed);
}
si la mine ar veni

Cod: Selectaţi tot

<script type="text/javascript">
<!--
// Functia care verifica si creaza obiectul XMLHttpRequest in functie de browser
function get_XmlHttp() {
  // Creaza variabila care va contine instanta la XMLHttpRequest, initial cu valoare nula
  var xmlHttp = null;

  if(window.XMLHttpRequest) {      // Daca browser-ul e Forefox, Opera, Safari, ...
    xmlHttp = new XMLHttpRequest();
  }
  else if(window.ActiveXObject) {   // Daca browser-ul este Internet Explorer
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  return xmlHttp;
}

// Functia care trimite datele la un fisier PHP si returneaza raspunsul

function ajaxrequest(tagID) {

  var cerere_http =  get_XmlHttp();
      // Apeleaza functia pt. crearea instantei la obiectul XMLHttpRequest

  // Creaza datele care trebuie trimise prin POST la scriptul PHP (perechi nume=valoare)
  var  datele = 'test='+document.getElementById(tagID).innerHTML;

  cerere_http.open("POST", 'test_post.php', true);         // Creaza cererea

  // Adauga un Header specific pentru ca datele sa fie recunoscute ca au fost trimise prin POST
  cerere_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  cerere_http.send(datele);      // Efectueaza trimiterea cererii, impreuna cu valorile care trebuie transmise

  // Verifica starea cererii
  // Daca raspunsul e primit complet, il transfera in eticheta HTML cu id-ul din "tagID"
  cerere_http.onreadystatechange = function() {
    if (cerere_http.readyState == 4) {
      document.getElementById(tagID).innerHTML = cerere_http.responseText;
    }
setTimeout("ajaxrequest(tagID)", 1000);
  }
}
//-->
</script>
si refresh nu face ...

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Lun Ian 18, 2010 5:53 pm

am pus un alert inloc de ajaxrequest si mil da deci interval merge dar nu da refresh la aia...

Avatar utilizator
lucki91
Senior Member
Mesaje: 272
Membru din: Dum Dec 07, 2008 1:31 pm
Localitate: Cluj-Napoca
Contact:

Mesajde lucki91 » Sâm Mai 08, 2010 2:00 pm

De ce nu folosesti o librarie gen jquery sau prototype?
Ii mult mai usor. :?

Avatar utilizator
Digi
Average Member
Mesaje: 100
Membru din: Lun Mai 03, 2010 4:45 am
Localitate: Bucuresti
Contact:

Mesajde Digi » Sâm Mai 08, 2010 5:22 pm

Cod: Selectaţi tot

setTimeout("ajaxrequest(tagID)", 1000);

---->>>

Cod: Selectaţi tot

setTimeout("ajaxrequest(" + tagID + ")", 1000);

:roll:


Înapoi la “Librarii Javascript”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 15 vizitatori