Php-Formular ajax "Erfolg & fail" - Meldung
Das Formular auf meiner Webseite ist ein einfaches Kontaktformular.
Ich würde gerne das Formular, um einen "Erfolg & failed" Meldung auf der gleichen Seite, wenn das Formular gesendet/fehlgeschlagen, ohne die Seite neu zu laden. Ich verstehe, dass ich Ajax verwenden, um dies zu tun, aber ich kann nicht ankommen es zu wirken, denn mein wissen darüber ist sehr wenig.
Hier ist der code mit dem ich arbeite.
Html (einzelne Seite, design):
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
<form class="form" id="contactus" action="" method="post" accept-charset="UTF-8">
<label for="nametag">Namn<FONT COLOR="#FF0060">*</FONT></label>
<input name="name" type="text" id="name" value="" />
<label for="emailtag">Email<FONT COLOR="#FF0060">*</FONT></label>
<input name="email" type="text" id="email" value="" />
<label for="phonetag">Telefon</label>
<input name="phone" type="text" id="phone" value="" />
<label for="messagetag">Meddelande<FONT COLOR="#FF0060">*</FONT></label></br>
<textarea name="message" id="message" style="width: 87%; height: 200px;"></textarea>
<label class="placeholder"> </label>
<button class="submit" name="submit">Skicka</button>
</form>
<script>
$(function() {
$('#contactus').submit(function (event) {
event.preventDefault();
event.returnValue = false;
$.ajax({
type: 'POST',
url: 'php/mail.php',
data: $('#contactus').serialize(),
success: function(res) {alert(res);
if (res == 'successful') {
$('#status').html('Sent').slideDown();
}
else {
$('#status').html('Failed').slideDown();
}
},
error: function () {
$('#status').html('Failed').slideDown();
}
});
});
});
</script>
Php:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$recipient = "[email protected]";
$subject = "Webbkontakt";
$formcontent = "Från: $name <br/> Email: $email <br/> Telefon: $phone <br/> Meddelande: $message";
$headers = "From: " ."CAMAXON<[email protected]>" . "\r\n";
$headers .= "Reply-To: ". "[email protected]" . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";
if(mail($recipient, $subject, $formcontent, $headers))
{
echo "successful";
}
else
{
echo "error";
}
?>
ajaax verwendet http-status-codes, um zu bestimmen Erfolg/Misserfolg. Wenn Sie möchten, dass für das auslösen der 'Fehler:' Pfad in deinen ajax-code, müssen Sie die Rückgabe einem 4xx-oder 5xx-http-status-code. Jetzt bist du die Ausgabe von einem
in der php-Skript
Könnten Sie mir einen code zurück? Ich verstehe, dass ich mache es falsch, aber ich weiß nicht wie Sie es beheben können und mein wissen über php & ajax ist sehr schlecht, so dass ich nicht wirklich verstehe 🙁
Hinweis: Sie senden den Wert 1 -
ja, Sean ist richtig, Sie schicken nur E-Mail. Senden Sie alle Daten für eine erfolgreiche Durchführung. Und auch das echo der Erfolg oder Misserfolg für die erste Antwort.
200 OK
keinen Körper, - oder (noch) ein 200 OK, mit dem Körper "Ett fiel uppstod". weder von denen, die Aussehen wie ein Fehler in der ajax-system.in der php-Skript
echo 'successful';
zu befriedigen if (data == 'successful')
Könnten Sie mir einen code zurück? Ich verstehe, dass ich mache es falsch, aber ich weiß nicht wie Sie es beheben können und mein wissen über php & ajax ist sehr schlecht, so dass ich nicht wirklich verstehe 🙁
Hinweis: Sie senden den Wert 1 -
data: {email: $('form input[type=email]').val()},
, aber erwartet 4 -$name = $_POST['name']; $email = $_POST['email']; $phone = $_POST['phone']; $message = $_POST['message'];
ja, Sean ist richtig, Sie schicken nur E-Mail. Senden Sie alle Daten für eine erfolgreiche Durchführung. Und auch das echo der Erfolg oder Misserfolg für die erste Antwort.
InformationsquelleAutor user2566091 | 2013-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
Ajax
Anruf wird nicht richtig funktionieren. Versuchen Sie, dieseAuch, wie Sie sehen können, habe ich verwendet
$('#contactus').serialize()
diese Weise werden Sie nicht brauchen, um passieren die Formular-Elemente nacheinander stattserialize()
übergeben wird, die gesamte form-Elemente, um Ihre php-SeiteAls in Ihrer php-Datei
echo
successful
wenn alles gut gegangen ist, sonstecho
error
wenn die Antwort einerror
als zeigen dieerror div
überprüfen Sie die Konsole, wenn es irgendwelche Fehler?
Es sollte funktionieren, solange du nicht noch andere Fehler auf Ihrer Seite
Haben Sie sich den code vor, einschließlich der der
jquery
Bibliothek. Legen Sie es unten das Formular aus und es wird funktionierendas Formular wird gesendet, aber es zeigt die Fehler Nachricht, wenn bezwingend
InformationsquelleAutor Khawer Zeshan
Ändern Sie Ihre PHP-Skript wie dieses:
InformationsquelleAutor
In Ihrem php-Skript, das Sie könnten versuchen, diese
InformationsquelleAutor curious_coder
Unter Ihrem
mail()
Funktion, einfachecho "successful";
InformationsquelleAutor Half Crazed
Können Sie
dataType: 'json'
in Ihremajax
nennen.Dann werden Sie in der Lage, um pass-status-code als Antwort-Schlüssel:
In js dann können Sie
data.success === 'ok'
zu wissen, was Ihr status ist.Fehler auf server-Seite könnte nicht(zum Beispiel Fehler bei der überprüfung, und es gibt keinen code für die Validierung Fehler) , HTTP-Protokoll, so ist es besser, zu unterscheiden, AJAX Fehler mit HTTP-Fehler.
ja.
InformationsquelleAutor baldrs