thepixture
Threadersteller
Dabei seit: 07.09.2005
Ort: Dresden
Alter: 46
Geschlecht:
|
Verfasst Do 23.08.2007 19:54
Titel komisches JS [solved] |
|
|
Jetzt muss ich mein kleines und seltsames Problemchen mal hier in die Runde werfen.
Ich möchte gern folgendes Ajax-Formular von dieser Seite nutzen: Link
Mein angepasster Code:
Formular:
Code: |
<div id="log">
<div id="log_res">
<!-- spanner -->
</div>
</div>
<form id="kontakt_form" name="kontakt_form" method="get" action="inc/send.php">
<table class="form">
<tr><td><label for="firma">Firma</label></td><td><input type="text" id="firma" name="firma" maxlength="40" value="" /></td></tr>
<tr><td><label for="name">Name</label></td><td><input type="text" id="name" name="name" maxlength="40" value="" /></td></tr>
<tr><td><label for="vorname">Vorname</label></td><td><input type="text" id="vorname" name="vorname" maxlength="40" value="" /></td></tr>
<tr><td><label for="email">e-Mail</label></td><td><input type="text" id="email" name="email" maxlength="40" value="" /></td></tr>
<tr><td><label for="telefon">Telefon</label></td><td><input type="text" id="telefon" name="telefon" maxlength="40" value="" /></td></tr>
<tr><td><label for="message">Mitteilung</label></td><td><textarea id="message" name="message" cols="30"></textarea></td></tr>
<tr><td> </td><td><input type="submit" name="button" id="submitter" /></td></tr>
</table>
</form>
|
send.php:
Code: |
<?php
error_reporting(E_NOTICE);
function valid_email($str)
{
return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}
if($_GET['name']!='' && $_GET['vorname']!='' && $_GET['email']!='' && valid_email($_GET['email'])==TRUE && strlen($_GET['message'])>10)
{
$to = 'blablabla';
$headers = 'From: '.$_GET['email'].''. "\r\n" .
'Reply-To: '.$_GET['email'].'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$subject = "Hello! I'm testing my new ajax email that I got from roscripts.com";
$message = htmlspecialchars($_GET['message']);
if(mail($to, $subject, $message, $headers))
{//we show the good guy only in one case and the bad one for the rest.
echo 'Thank you '.$_POST['first_name'].'. Your message was sent';
}
else {
echo "Message not sent. Please make sure you're not
running this on localhost and also that you
are allowed to run mail() function from your webserver";
}
}
else {
echo 'Please make sure you filled all the required fields,
that you entered a valid email and also that your message
contains more then 30 characters.';
}
?>
|
teil von js-datei:
Code: |
...
function formMessage() {
$('kontakt_form').addEvent('submit', function(e) {
new Event(e).stop();
var log = $('log_res').empty().addClass('ajax-loading');
this.send({
update: log,
onComplete: function() {
log.removeClass('ajax-loading');
}
});
});
}
function ajaxRequest() {
new Ajax(url, {
method: 'get',
update: $('content'),
evalScripts: 'true',
onComplete: function() { mySlide();}
}).request();
if (url == 'inhalte/kontakt.php') { formMessage(); }
}
...
|
Das Formular wird aus einer separaten Datei in ein Div geladen (per mootools und ajax).Ich habs jetzt soweit abgeändert und angepasst, dass es eigentlich klappt, aber das Problem ist jetzt, wenn ich das Formular abschicke, wird die send.php in das aktuelle Fenster geladen und somit nur die Meldung, ob es erfolgreich abgeschickt wurde oder nicht, ausgegeben. Aber wenn ich in die Javascriptfunktion "formMessage()" ein alert('test'); an den Anfang einfüge, dann wird die Meldung korrekt in dem dafür vorgesehen Div ausgegeben.
Jetzt möcht ich mal wissen, warum nur dann?
Hoffe mir kann da jemand helfen.
Zuletzt bearbeitet von thepixture am Fr 24.08.2007 12:50, insgesamt 1-mal bearbeitet
|
|
thepixture
Threadersteller
Dabei seit: 07.09.2005
Ort: Dresden
Alter: 46
Geschlecht:
|
Verfasst Fr 24.08.2007 12:50
Titel
|
|
|
Hab den Fehler gefunden.
Die if-Abfrage muss mit in die onComplete-function. Zumindest funzt es jetzt so wie es soll.
Code: |
function ajaxRequest() {
new Ajax(url, {
method: 'get',
update: $('content'),
evalScripts: 'true',
onComplete: function() {
if (url == 'inhalte/kontakt.php') {
formMessage();
} else {
mySlide();
}
}
}).request();
}
|
|
|