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
 

getElementById, id-uri diferite
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
AgLiAn



Data înscrierii: 05/Noi/2004
Mesaje: 16
Locație: Iași

Trimis: Mar Noi 13, 2007 10:07 am    Titlul subiectului: getElementById, id-uri diferite  

Salut. Am o mica problema, am urmatorul cod html: Cod: <div id="poll" vAlign="top">
  <form method="GET">
 
<table border="0" cellSpacing="3" cellPadding="0">
 
  <tr>
    <td colspan="2"><input type="button" name="vote" value="1" onclick="getVote(this.value)"></td>
  </tr>
 
</table>

  </form>
</div> Si bucata de JS: Cod: var xmlHttp

function getVote(int) {
   xmlHttp = GetXmlHttpObject()
   if (xmlHttp == null) {
      alert ("Browser does not support HTTP Request")
      return
   }
   
   var url = "x.php"
      url = url+"?vote="+int
      url = url+"&sid="+showCookie() //Math.random()
   xmlHttp.onreadystatechange = stateChanged
   xmlHttp.open("GET", url, true)
   xmlHttp.send(null)
}

function stateChanged() {
   if(xmlHttp.readyState == 1) {
      document.getElementById("poll").innerHTML = "<img src=\"indicator_kit.gif\">";
   }
   
   if (xmlHttp.readyState==4 || xmlHttp.readyState == "complete") {
   document.getElementById("poll").
   innerHTML = xmlHttp.responseText;
   }
}

function GetXmlHttpObject() {
   var objXMLHttp = null
   
   if (window.XMLHttpRequest) {      // if Mozilla, Safari etc
      objXMLHttp = new XMLHttpRequest()
      
   } else if (window.ActiveXObject) {   // if IE
      objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
   }
   
   return objXMLHttp
}

Intrebarea e, ce trebuie sa modific, cum si unde pentru a putea avea in pagina 2 form-uri diferite, ce sa apeleze aceeasi functie AJAX, insa trimitand parametri diferiti. Stiu ca e vorba de acel id si getElementById, insa nu am reusit sa fac ce voiam.

Dati-mi niste referinte daca aveti, sa citesc, sau explicati-mi voi va rog.
Multumesc.
Sus  
redcom



Data înscrierii: 27/Mai/2004
Mesaje: 114
Locație: iasi

Trimis: Mar Noi 13, 2007 10:22 am    Titlul subiectului:  

pai sincer nu ai nevoie de getElementById
Sa presupunem ca ai doua formulare:

Cod:
<form name='' id='' method='' action='' return onsubmit='validateThisForm_1()'>

<input type='text' name='d' id='d' value=''>
</form>


<form name='' id='' method='' action='' return onsubmit='validateThisForm_2()'>

</form>


cele doua functii validateThisForm_1 si respeciv doi vor vace validarile de rigoare si fiecare in parte for instantia un obiect ajax cum doresti si iti faci treaba.


Poti accesa elementele fiecarui formular fie clasic (html) fie prin DOM eg:

var d = document.getElementById('d');

alert(d.value);


O sugestie daca imi permiti: foloseste intodeauna buttonul de submit daca vrei sa trimiti un formular. Acesta fie este trimis folosind ajax dupa cum si doresti dar daca nu ai support pentru obiectul respectiv atunci se va trimite clasic deci ai siguranta ca va fi trimis indiferent de mediu.
Sus  
AgLiAn



Data înscrierii: 05/Noi/2004
Mesaje: 16
Locație: Iași

Trimis: Mar Noi 13, 2007 1:49 pm    Titlul subiectului:  

Pai si daca am id-uri generate automat, scuipate dintr-o baza de date? Ce mi-ai dat tu acolo e in cazul in care am 2 form-uri, insa daca am 10? Fac 10 functii JS? Vreau sa fie ceva general, sa poate culege orice id de la 0 la pow(99999,99999).


Citat: O sugestie daca imi permiti: foloseste intodeauna buttonul de submit daca vrei sa trimiti un formular. Acesta fie este trimis folosind ajax dupa cum si doresti dar daca nu ai support pentru obiectul respectiv atunci se va trimite clasic deci ai siguranta ca va fi trimis indiferent de mediu. Mersi de sugestie. Voi modifica.
Sus  
dechim



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

Trimis: Mar Noi 13, 2007 7:19 pm    Titlul subiectului:  

Prin

" document.getElementById("poll").innerHTML = xmlHttp.responseText; "

primesti a doua forma de la server dupa vot. Pentru ca si aceasta sa functioneze folosind aceeasi functie Ajax trebuie sa modifici functia.
Id-ul "poll" poate sa ramana :
Cod:
function getVote(url) {
   xmlHttp = GetXmlHttpObject()
   if (xmlHttp == null) {
      alert ("Browser does not support HTTP Request")
      return
   }
   xmlHttp.onreadystatechange = stateChanged
   xmlHttp.open("GET", url, true)
   xmlHttp.send(null)
}

Parametrul url transmis functiei trebuie sa fie de forma "fisier.php?var1=val1
&var2=val2&... inclusiv "&sid="+showCookie()
OnClick-ul butonului pentru prima forma va fi :
onclick = "var url='fisier.php?vote='.this.value.'&sid='.showCookie(); getVote(url);"
Forma care o va inlocui dupa actiunea butonului va contine un nou buton cu onclick de aceeasi forma.
@AgLiAn ti-a zis bine da' nu-i ajax si face submit la toata pagina.
Daca vrei sa validezi forma inainte de trimitere (desi poti sa o faci cu scriptul fisier.php), codul onclik va fi:
onclick = "var url='fisier.php?vote='.this.value.'&sid='.showCookie(); return (validate_1() && getVote(url));"
Eu zic ca nu trebuie sa te complici, prin AJAX poti conversa rapid cu serverul. Daca-i eroare trimiti aceeasi forma inapoi cu ceva explicatii despre eroare.
Succes!

Daca ai mai multe forme pe pagina cauta pe forum, am postat eu o functie care le include pe cele 3 dar e POST.
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