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