Ik probeer middels een simpel HTML form in combinatie met Javascript (AJAX) een form te submitten naar post.php. Dit script moet voor verschillende formulieren bruikbaar zijn waarvan de inhoud en aantal input velden elke keer anders is. Dit heb ik proberen op te lossen door een loop te maken waarmee het aantal input velden (elements) elke keer opnieuw wordt ingelezen. Tot dusver is dat mij gelukt, maar nu loop ik tegen het probleem aan dat alle waardes van de input velden achter elkaar worden gezet.
Het resultaat (echo uit post.php) van de volgende code is dan ook:
naam 1 is: pptxtname2=qq=Submit en naam 2 is:
Wanneer ik de uitkomst in een alert zet, dan krijg ik het volgende resultaat:
txtname=pp --> ok,
txtname=pptxtname2=qq --> ok,
txtname=pptxtname2=qq=Submit --> ok,
Wat doe ik nou fout?
Het resultaat (echo uit post.php) van de volgende code is dan ook:
naam 1 is: pptxtname2=qq=Submit en naam 2 is:
Wanneer ik de uitkomst in een alert zet, dan krijg ik het volgende resultaat:
txtname=pp --> ok,
txtname=pptxtname2=qq --> ok,
txtname=pptxtname2=qq=Submit --> ok,
Wat doe ik nou fout?
HTML:
1
2
3
4
5
6
7
8
9
| <form name="myForm" id="myForm"> <table> <tr><td>Enter Name</td><td><input type="text" name="txtname" id="txtname" /></td></tr> <tr><td>Enter Name</td><td><input type="text" name="txtname2" id="txtname2" /></td></tr> <tr><td colspan="2"><input type="button" value="Submit" onclick="ajaxFunction();" /></td></tr> </table> <hr /> <div id="message" name="message"></div> </form> |
JavaScript:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| <script type="text/javascript"> var time_variable; function getXMLObject() //XML OBJECT { var xmlHttp = false; try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP") // For Old Microsoft Browsers } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") // For Microsoft IE 6.0+ } catch (e2) { xmlHttp = false // No Browser accepts the XMLHTTP Object then false } } if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); //For Mozilla, Opera Browsers } return xmlHttp; // Mandatory Statement returning the ajax object created } var xmlhttp = new getXMLObject(); //xmlhttp holds the ajax object function ajaxFunction() { var getdate = new Date(); //Used to prevent caching during ajax call if(xmlhttp) { // Loop door alle velden die verstuurd moeten worden. var poststr = ''; var elem = document.getElementById('myForm').elements; for(var i = 0; i < elem.length; i++) { alert(poststr += elem[i].name + "=" + elem[i].value); } //var poststr = "txtname=" + encodeURI( document.getElementById("txtname").value ) + //"&txtname2=" + encodeURI( document.getElementById("txtname").value ); xmlhttp.open("POST","post.php",true); //calling testing.php using POST method xmlhttp.onreadystatechange = handleServerResponse; xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(poststr); //Posting txtname to PHP File } } function handleServerResponse() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200) { document.getElementById("message").innerHTML=xmlhttp.responseText; //Update the HTML Form element } else { alert("Er is een fout opgetreden tijdens de verzending van dit formulier. Probeer het nog eens. Mocht u nogmaals deze melding krijgen, neemt u dan telefonisch contact op te nemen."); } } } |
PHP:
1
2
| $a = "naam 1 is: ".$_POST['txtname']." en naam 2 is: ".$_POST['txtname2']; echo $a; |