Avatar billede para7 Nybegynder
08. september 2009 - 09:35 Der er 18 kommentarer og
1 løsning

Sende tjek mail fra form der ikke er udfyldt korrekt

Vi har en kontaktform for kunder. Der er javascript validering på fx mail og telefon feltet. Vi vil gerne tjekke om mange prøver at sende mails, men fx ikke vil udfylde telefon. Derfor ønsker vi at der når de trykker på send knappen, altid bliver sendt en mail til os. Går ud fra det er noget med onsubmit med javascript, der kalder en send.php ?

Har nogen forslag til en rimelig enkel løsning?
Jeg  er ikke en haj til at komponere javascrips, men kan godt forstå og ændre det.
Avatar billede Slettet bruger
08. september 2009 - 10:11 #1
Du skal lave en løsning med AJAX. En let måde at gøre det på, er ved at bruge et framework med et AJAX-objekt, som f.eks. jQuery:
http://jquery.com/

Dette jQuery script sender, ved tryk på elementet med id'et "send", en post-request med besked, navn og telefonnummer til scriptet "send.php". Ret til efter behov:

$(function{
    $("#send").click(function(){
        $.post("send.php",{
            besked: $("#besked").val(),
            navn: $("#navn").val(),
            telefon: $("#telefon").val()
        });
    })
});
Avatar billede para7 Nybegynder
08. september 2009 - 11:03 #2
OK, det ser enkelt ud i sig selv, men kræver det noget AJAX framework eller lignende, jeg skal installere?
Er det let nok at få overført nogle formvariabler?
Avatar billede para7 Nybegynder
08. september 2009 - 11:06 #3
OK, variablerne er jo med i scriptet.
Avatar billede Slettet bruger
08. september 2009 - 16:18 #4
Ja, ovenstående kræver javascript-framework'et jQuery. Det findes alternativer i andre frameworks, så som Mootools og Prototype, men jQuery er smart fordi det koncentrerer sig om DOM'en, og gør det let at hente variabler osv.

Du kan downloade jQuery her:
http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.min.js&downloadBtn=
eller linke direkte til det på Googles, som hoster projektet, server:
<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
Avatar billede para7 Nybegynder
08. september 2009 - 17:28 #5
UHA det er nok en større operation, eller kan du fortælle mig hvordan jeg får det til at køre?
Avatar billede Slettet bruger
08. september 2009 - 19:50 #6
Det er nu ikke så svært.
Du lægger blot koden i head'et på din side:

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(function{
    $("#send").click(function(){
        $.post("send.php",{
            besked: $("#besked").val(),
            navn: $("#navn").val(),
            telefon: $("#telefon").val()
        });
    })
});
</script>

Så vil id'et "send" sende en besked med id'erne "besked", "navn" og "telefonnummer"'s indhold.
Avatar billede Slettet bruger
08. september 2009 - 19:51 #7
Nu vil jeg lige bruge din tråd til at eksperimentere med ekspertens tags. Jeg håber at du vil bære over med mig.

[quote]Dette er i quote tags.[/quote]
[code]Dette er i code tags.[/code]
Avatar billede para7 Nybegynder
09. september 2009 - 10:08 #8
Det ser godt ud, men hvordan kalder jeg funktionen. Er ("#send")submitknappens navn?
Avatar billede Slettet bruger
09. september 2009 - 11:46 #9
Jeg skrev koden lidt for hurtigt og glemte at kommentere den. Her kommer så en version hvor man da kan følge lidt med:
http://pastebin.com/m28012a01
Avatar billede para7 Nybegynder
09. september 2009 - 17:22 #10
Jeg har ikke lige lagt scriptet ind i headeren, men over formen.
Jeg har navngivet name så det skulle passe. Der kommer javascript fejlen:

Meddelelse: Tegnet '(' var ventet
Linje: 210
Tegn: 11
Kode: 0
URI: http://xxxxxx.dk/mail.php/mail/1
Avatar billede para7 Nybegynder
09. september 2009 - 17:29 #11
Her er kidekodeområdet:


<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(function{
    $("#Submit").click(function(){
        $.post("send.php",{
            besked: $("#besked").val(),
            navn: $("#navn").val(),
            telefon: $("#telefon").val()
        });
    })
});
</script>



<form id="theForm" method="POST" action="../../../mailsend.php/1" enctype="multipart/form-data" name="entry" onsubmit="">
Avatar billede para7 Nybegynder
09. september 2009 - 17:30 #12
Linje: 210 ser ud til at være der hvor template filen med scriptet hentes ind.
Avatar billede Slettet bruger
09. september 2009 - 17:57 #13
Hvordan henter du skabelonen?
Med SSI, eller med PHP?
Er du sikker på at det ikke bare er en PHP-fejl?
Avatar billede para7 Nybegynder
09. september 2009 - 18:20 #14
Det ser ud til at være PHP der henter body filen, og kildekoden viser da også at det hele er på plads.

Linje: 210 er:
'PAGE_BODY' => $parententry['body']

$template->assign_vars(array(
        'dsp_contact' =>"style=\"display:none;\"",
        'dsp_rel' =>"style=\"display:none;\"",
    'dsp_broch' =>"style=\"display:none;\"",
    'PAGE_BODY' => $parententry['body']   
    )
);
Avatar billede para7 Nybegynder
12. september 2009 - 10:45 #15
Kan vi løse problemet?
Avatar billede Slettet bruger
12. september 2009 - 14:16 #16
Jeg tager afsted til Istanbul om tre minutter, så jeg har ikke rigtig tid til at udtænke en løsning, desværre, men jeg vil kigge på det når jeg kommer hjem.
Avatar billede para7 Nybegynder
12. september 2009 - 19:54 #17
Kan godt unde dig det, god ferie....
Avatar billede para7 Nybegynder
25. september 2009 - 08:39 #18
Jeg har lavet server side validering og sætter tjek mail på her. Lukker og takker...
Avatar billede Slettet bruger
25. september 2009 - 19:51 #19
Jamen selv tak.
Og tak for point :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester