Formulardaten mittels Ajax übermitteln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Formulardaten mittels Ajax übermitteln

    Tag zusammen!

    Ich bin gerade dabei mir ein Kontaktformular zu basteln. Das übermitteln an sich funktioniert schon. Nur sollte es so sein, dass die Variablen nicht an den Browser übermittelt werden, sondern das ganz soll im Hintergrund ablaufen, sodass die Seite nicht neu geladen wird.

    Hab in google ein bisschen gesurft und wurde auch fündig. Da gab es ein ähnliches Script, welches ich nur noch angepasst hab.

    Im Header steht bei mir folgendes:

    Quellcode

    1. <script src="js/prototype.js" type="text/javascript"></script>
    2. <script type="text/javascript">
    3. function init () {
    4. $('submit').onclick = function () {
    5. sendData();
    6. }
    7. }
    8. function sendData () {
    9. var url = 'php/mail.php';
    10. var pars = Form.serialize('frm');
    11. var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: showLoad, onComplete: showResponse} );
    12. }
    13. function showLoad () {
    14. $('load').style.display = 'block';
    15. }
    16. function showResponse (originalRequest) {
    17. var newData = originalRequest.responseText;
    18. $('load').style.display = 'none';
    19. $('status').innerHTML = newData;
    20. }
    21. </script>
    Alles anzeigen


    Der Code des Formulars ist:

    Quellcode

    1. <form id="frm" name="frm">
    2. <table cellspacing="0" cellpadding="0" border="0">
    3. <tbody>
    4. <tr>
    5. <td valign="top" height="40">
    6. <p><strong>Ihre Nachricht an mich:</strong><strong><br />
    7. </strong></p>
    8. </td>
    9. <td valign="top">&nbsp;</td>
    10. </tr>
    11. <tr>
    12. <td valign="top">Name, Vorname <span style="color: red;">*</span></td>
    13. <td valign="top"><input type="text" size="40" id="name" class="formStyle" name="name" /></td>
    14. </tr>
    15. <tr>
    16. <td valign="top">Firma</td>
    17. <td valign="top"><input type="text" size="40" id="firma" class="formStyle" name="firma" /></td>
    18. </tr>
    19. <tr>
    20. <td valign="top">Telefon</td>
    21. <td valign="top"><input type="text" size="40" id="phone" class="formStyle" name="tele" /></td>
    22. </tr>
    23. <tr>
    24. <td valign="top">E-Mail-Adresse <span style="color: red;">*</span></td>
    25. <td valign="top"><input type="text" size="40" id="email" class="formStyle" name="email" /></td>
    26. </tr>
    27. <tr>
    28. <td valign="top">Webseite</td>
    29. <td valign="top"><input type="text" size="40" id="webseite" class="formStyle" name="webseite" /></td>
    30. </tr>
    31. <tr>
    32. <td>&nbsp;</td>
    33. <td>&nbsp;</td>
    34. </tr>
    35. <tr>
    36. <td colspan="2">Beschreibung <span style="color: red;">*</span></td>
    37. </tr>
    38. <tr>
    39. <td colspan="2"><textarea id="job" class="formStyle_Large" rows="5" cols="60" name="job"></textarea></td>
    40. </tr>
    41. <tr>
    42. <td>&nbsp;</td>
    43. <td>&nbsp;</td>
    44. </tr>
    45. </tbody>
    46. </table>
    47. <p align="left"> <input type="submit" value="Anfrage schicken" class="inputButton" id="submit" /> </p>
    48. <p>&nbsp;</p>
    49. <div style="display: none;" id="load">Bitte warten...</div>
    50. <div id="status"></div>
    51. <p>&nbsp;</p>
    52. <p><span style="font-size: 8pt;">Notwendige Angaben sind mit <span style="color: red;">*</span> gekennzeichnet.</span></p>
    53. </form>
    Alles anzeigen


    Außerdem habe ich im body noch angegeben:

    Quellcode

    1. <body onload="init()">


    Das Einblenden des Divs "display" funktioniert wunderbar.
    Anschließend sollte er im div "status" einen bestimmten Text(Error o. Success) einbinden. Tut er aber nicht, was ich nicht verstehe.

    Es werden die Variablen des Formulars übergeben und die Email abgeschickt. Die Variablen sind dann auch in der Adressleiste zu sehen(sollte doch nicht so sein?).

    Vielleicht könnte es daran liegen, dass der code in einer php liegt. Zuvor hatte ich zum Test den Code in einer externen HTML getestet und es hatte auch alles prima funktioniert.

    Ich hoffe, dass ihr mir weiterhelfen könnt.

    grüße Willy
  • Re: Formulardaten mittels Ajax übermitteln

    hi, wie genau meinst du das?

    "styleworker" schrieb:

    Zuvor hatte ich zum Test den Code in einer externen HTML getestet und es hatte auch alles prima funktioniert.

    also .php zu .html umbenannt und es hat geklappt?
    das macht eigentlich keinen unterschied. Hast du alle externen dateien (prototype) mitkopiert?

    nutzt du firefox.. schau mal unter "extras" in die fehlerkonsole, ob da etwas mehr infos erscheinen
  • Habs nur zum Testen auf post gewechselt. Hat das Problem aber nicht gelöst.

    Benutze zum Testen am besten den Link: willyraider.de/kontakt.html

    Hier der code meiner mail.php:

    Quellcode

    1. $mailaddress = "xxx@xxx.de"; //e-mail Adresse des Empf?ngers
    2. $betreff = "Kundenauftrag";
    3. $name = $_GET['name'];
    4. $firma = $_GET['firma'];
    5. $phone = $_GET['phone'];
    6. $email = $_GET['email'];
    7. $website = $_GET['website'];
    8. $job = $_GET['job'];
    9. // jetzt die Mail wegschicken
    10. if(@mail($mailaddress, $betreff, "Name: $name \nFirma: $firma \nTelefonnummer: $phone \nE-Mail: $email \nWebseite: $website \n\nNachricht: \n$job", "From:$email")){
    11. print "Vielen Dank für Ihre Anfrage. Sie hören so bald wie möglich von mir.";
    12. usleep(400000);
    13. }else {
    14. print "Die Anfrage konnte nicht gesendet werden. Bitte kontaktieren Sie mich unter xxx@xxx.de";
    15. usleep(400000);
    16. }
    Alles anzeigen