[AJAX] Automatisch elements.form

Pagina: 1
Acties:

  • Mastruberik
  • Registratie: December 2002
  • Laatst online: 17-01-2022
Hallo,

ik ben bezig met het maken van een website met behulp van AJAX. Zit er nu al een tijdje mee te spelen en vind het idiaal dat je direct zonder refresh de gegevens uit de database kan halen. Maar ik stuiter nu op een probleem en kan het zelf niet oplossen.

Ik had wat kennis van javascript, maar dat is zo goed als vergaan:S:). Dus kan het niet zelf op lossen en met zoeken is het tot nu toe nog niet gelukt.

Probleem is dat ik van tevoren moet aangeven welke velden ik gebruik en maar 1 keer kan invullen. Dus als ik een select box maak waar ik een keuze uit kan maken en na een refresh een nieuwe formulier ga invullen wat op dezelfde pagina komt gaat niet omdat in ajax het nog niet aangeven is. Als ik dat wel doe, dus meer elementen ga toevoegen en paar hidden fields maak bij de select gedoe, dan gaat het ook fout, omdat het gezien word als element 2 en 3 en vervolgens niet via form2 en form3 die elementen kan vullen, want die worden dan 4 en 5.

kan iemand mij op weg helpen of kunnen uitleggen hoe het automatisch zal kunnen? Zonder handmatig de elements moeten aan te geven?


------------- ajax script(gaat om de ene laatste laatste regel, waarde form1 en 2 en 3 worden gevuld ,self.xro.send....)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script>
    function ajax_call(edit) {
    var self = this;
    this.stateChange = function() {
        if(self.xro.readyState == 4 || self.xro.readyState == "complete") {
            //self.handler;
            document.getElementById("dit_wordt_strax_via_ajax_geladen").innerHTML = self.xro.responseText;
        }
    }
    this.connect = function() {
        if (window.XMLHttpRequest) {
            //Mozilla/Gecko
            self.xro = new XMLHttpRequest();
            self.xro.onload = this.stateChange;
        }else if (window.ActiveXObject) {
            //Internet Hackplorer
            self.xro = new ActiveXObject("Microsoft.XMLHTTP");
            self.xro.onreadystatechange = self.stateChange;
        }
        if(self.xro != null) {
            self.xro.open("POST", "machine.php?optie=addmachine&ajax=true&edit="+edit, true);
            self.xro.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            self.xro.send("form1="+document.forms[0].elements[0].value+"&form2="+document.forms[0].elements[1].value+"&form3="+document.forms[0].elements[2].value)
        }
    }
    this.connect();
}
</script>


dit is de eerste select box, waar mensen een keuze kan maken, daarna komt een vervolg formulier. Die formulier word via een if naar voren getoverd, zodra form1 ingevuld is komt formulier 2 waar velden form 2 en form3 ingevuld word.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        <select name="form1" onchange="ajax_call()">
<?php
        if(!empty($_POST[form1])){
            $queryselectonid = mysql_query("SELECT projectnr,naam FROM project WHERE projectnr =". $_POST['form1']) or die(mysql_error());
            $r = mysql_fetch_array($queryselectonid);
           echo "<option value=\"$r[projectnr]\">$r[projectnr] | $r[naam]</option>";
           while($result = mysql_fetch_array($queryselect))
            {
             echo "<option value=\"$result[projectnr]\">$result[projectnr] | $result[naam]</option>";
            }
            }
        else{
            echo "<option value=\"\">Maak uw keuze</option>";
            while($result = mysql_fetch_array($queryselect))
             {
              echo "<option value=\"$result[projectnr]\">$result[projectnr] | $result[naam]</option>";
            }
            }
?>
        </select>



Ik hoop dat het probleem te snappen is:) beetje moeilijk uitleggen.

Maar simpel gezegt, lukt het mij niet om de self.xro.send automatich te laten kijken welke velden er gevuld moeten worden op het moment als het ingevuld is.

[ Voor 9% gewijzigd door Mastruberik op 12-06-2006 18:01 ]


  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

Als je nou eens de waarden van je form als argumenten aan de functie doorgeeft? Dan is je ajaxfunctie op elke pagina te gebruiken.

:w @ Erik :+

Raar... Is zo gek nog niet


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

En daarnaast zit je probleem niet in de PHP code en dan is genereerde html wel wat makkelijker door te lezen. Denk daar volgende keer aan ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

vind het ook een beetje raar dat je POST & GET waarden tegelijk stuurt... als je toch via XMLHTTP werkt kan je net zo goed alles via POST sturen...


[off-topic]Het script komt me wel heeeeeeeeeel bekend voor :+[/off-topic]

Raar... Is zo gek nog niet