Contact formulier, Echo probleem met Ajax.. vaaaag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Philip van Leeuwen

Philip van Leeuwen

06/07/2008 12:18:00
Quote Anchor link
Ik heb een webpagina. Daarin bevindt zich een menu. Wanneer er op een link in het menu wordt geklikt dan opent een nieuwe pagina in een bepaald gedeelte van de pagina. Gemaakt met Ajax. Zoals dit:
http://www.dynamicdrive.com/dynamicindex17/ajaxcontent.htm

Zo heb ik ook een pagina, contact.php in de hoofdpagina. Wanneer er iets niet goed in het formuleer wordt ingevuld "print" hij het op een nieuwe pagina. Terwijl die eigenlijk gewoon op de eigenpagina moet echo'en in de hoofdpagina.


http://philiphannaart.nl/wijngilde/
Ga via inschrijven! naar Contact.
en klik op verzenden en je ziet het probleem

Hoe kan ik dit oplossen?
Ik heb al dagen gegoogeld en in boeken gebladerd, maar kom er niet uit...
De code van de link:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="javascript:ajaxpage('contact.php', 'rightcolumn');">Contact</a>




De code van contact.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  <form method="POST" action="contact.php">
            <p>Naam:<br>
  <input name="naam" type="text" class="style4" value=<? print' "'.$_POST['naam'].'" ' ?> size="36">
             <br>
             E-mail:
             <br>
             <input name="emailadres" type="text" class="style4" value=<? print' "'.$_POST['emailadres'].'" ' ?> size="36">
             <br>
             Onderwerp:
             <br>
             <input name="onderwerp" type="text" class="style4" value=<? print' "'.$_POST['onderwerp'].'" ' ?> size="36">
             <br>
 Bericht:<br>
  <textarea name="bericht"

cols="38" rows="4" class="style4" type="text"><?php echo''.$_POST['bericht'].''?></textarea>              
  
  
  
  <input type="submit" value="Verzenden"

name="submit">
  
  <input type="reset" value="Opnieuw" name="reset">                
  
  
  
  
  
  <br>
</p>
<?php //contactformulier Webstudio10 1.0

        

        ini_set('display_errors', 1);

        error_reporting (E_ALL & ~E_NOTICE);

        

        // kijk of formulier gesubmit is

        if (isset ($_POST['submit'])) {

        

        $problem = FALSE; // tot dusver geen problemen

        

        // elk veld controleren


        if (empty ($_POST['naam'])) {

            $problem = TRUE;

            print'<b>Vul alstublieft uw naam in</b><br>';

            }


            

        if (empty ($_POST['emailadres'])) {

            $problem = TRUE;

            print'<b>Vul alstublieft uw emailadres in</b><br>';

            }


            

        if (empty ($_POST['onderwerp'])) {

            $problem = TRUE;

            print'<b>Vul alstublieft een onderwerp in</b><br>';

            }


            

        if (empty ($_POST['bericht'])) {

            $problem = TRUE;

            print'<b>Vul alstublieft een bericht in</b>';

            }


        

        if (!$problem) {

        print'<b>Uw bericht is verstuurd!</b>';

        

        // email versturen

        $body = "

Naam: {$_POST['naam']}

Email: {$_POST['emailadres']}

Bericht:

{$_POST['bericht']}"
;

        mail ('[email protected]',$onderwerp,$body,"From: {$_POST['emailadres']}");

        
}

}


?>



          </form>
Gewijzigd op 01/01/1970 01:00:00 door Philip van Leeuwen
 
PHP hulp

PHP hulp

28/03/2024 12:13:58
 
- SanThe -

- SanThe -

06/07/2008 12:38:00
Quote Anchor link
Pas je script even aan en gebruik en tags om je code heen. Gebruik je Afbeelding knop om dit te doen.

SanThe.
 
Philip van Leeuwen

Philip van Leeuwen

06/07/2008 12:54:00
Quote Anchor link
Bedankt Robert_Deiman voor het aanpassen.

Hopelijk heeft iemand een oplossing voor het 'print' probleem..
 
Philip van Leeuwen

Philip van Leeuwen

06/07/2008 17:18:00
Quote Anchor link
bump
 
- SanThe -

- SanThe -

06/07/2008 17:21:00
Quote Anchor link
Niet Bumpen.
Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
 
Douwe

Douwe

06/07/2008 18:04:00
Quote Anchor link
Je moet het formulier versturen via AJAX, en niet via een gewoon <form>. Dit kan heel makkelijk me de Prototype-functie request.
 
Philip van Leeuwen

Philip van Leeuwen

06/07/2008 19:45:00
Quote Anchor link
Thanks, dat duwt me al iets meer in de goede richting.

Ik snap het alleen nog niet helemaal..
Hoe zou dit stukje er dan uitzien met de request functie?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
  
<form method="POST" action="contact.php">
            Naam:<br>
  <input name="naam" type="text" class="style4" value=<? print' "'.$_POST['naam'].'" ' ?> size="36">
            
  <input type="submit" value="Verzenden" name="submit">
              
  <input type="reset" value="Opnieuw" name="reset">
 
Philip van Leeuwen

Philip van Leeuwen

08/07/2008 08:25:00
Quote Anchor link
Hoe zou ik bovenstaand stukje code moeten versturen met Ajax? Wat zou die code worden en waar zou ik die moeten verplaatsen?

[pink floyd modus]Hello, hello, hello Is there anybody in there?[/pink floyd modus]
 
Emmanuel Delay

Emmanuel Delay

08/07/2008 12:21:00
Quote Anchor link
Formulieren verzenden met Ajax:

Voorbeeldje:

html gedeelte
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<input type="text" id="naam"/> Naam <br/>
<input type="text" id="bericht"/> Bericht <br/>
<input type="button" onClick="zend_formulier_met_get();" value="met GET"/> <br/>
<input type="button" onClick="zend_formulier_met_post();" value="met POST"/> <br/>


javascript gedeelte
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
function zend_formulier_met_get()
{
  var naam = document.getElementById('naam').value;
  var bericht = document.getElementById('bericht').value;
  var url = "index.php?page=verzend_bericht&naam=" + naam +"&bericht=" + bericht;
  xmlHttpLoad.open("GET", url, true);
  xmlHttpLoad.onreadystatechange = handleHttpResponse_zend_formulier;
  xmlHttpLoad.send(null);
}


function zend_formulier_met_post()
{
  var naam = document.getElementById('naam').value;
  var bericht = document.getElementById('bericht').value;
 
  var passData = 'naam='+escape(naam)+'&bericht='+escape(bericht);
 
  var url = "index.php?page=verzend_bericht;
  xmlHttpLoad.open("POST", url, true);
  xmlHttpLoad.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttpLoad.onreadystatechange = handleHttpResponse_zend_formulier;                            
  xmlHttpLoad.send( passData );
}


function handleHttpResponse_zend_formulier()
{
  if(xmlHttpLoad.readyState == 4)
  {
   // ... doe wat je moet doen, bv.
    document.getElementById('resultaat').innerHTML = xmlHttpLoad.responseText;    
  }
}


Merk op: de <form></form> tag heb je niet meer nodig.
ipv. een submit knop zet je een button, met een onClick tag.

Je kiest maar of je het via post of get doet. Naargelang wat er in het formulier komt, is het ene beter dan het andere.

Als je textarea's hebt, waar grote stukken tekst komen, zit je sowieso beter met POST.

xmlHttpLoad is het object dat alle ajax regelt; je maakt het bv. aan met de functie createHTTPHandler()

Die functie heb ik hier gedefinieerd:
http://phphulp.nl/forum/showtopic.php?cat=15&id=50783&page=
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.