Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX][PHP] - Przesłanie danych "w tle"
Forum PHP.pl > Forum > Przedszkole
Dominator
Uczę się jQuery i AJAX'u lecz jestem na etapie tworzenia tak zaawansowanej strony, stoję przy funkcji email. Mam pytanie - czy da się zrobić aby email został wysłany w taki sposób aby strona nie musiała się przeładowywać ?

Pozdro
lobopol
Jasne, że tak. Przesyłasz do skryptu php dane używając funkcji ajax w jquery, a w php wysyłasz maila i wyświetlasz zwrot do strony z której wysyłałeś.
Dominator
To jest takie coś ?

  1. $.ajax({
  2. url: "test.html",
  3. context: document.body,
  4. success: function(){
  5. $(this).addClass("done");
  6. }
  7. });
lobopol
Nie
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. url: "mail.php",
  3. data: "email=aa@aa.pl&tresc=tresc"
  4. type: "POST",
  5. success: function(zwrot){
  6. alert(zwrot)
  7. },
  8. error: function(){
  9. alert('blad')
  10. }
  11.  
  12. }
  13. });
[JAVASCRIPT] pobierz, plaintext

mail.php
  1.  
  2. print_r($_POST);
Dominator
A jak wywołać tą funkcję ?

Tak zrobić ?

  1. function cos()
  2. {
  3. $.ajax({
  4. url: "mail.php",
  5. data: "email=aa@aa.pl&tresc=tresc"
  6. type: "POST",
  7. success: function(zwrot){
  8. alert(zwrot)
  9. },
  10. error: function(){
  11. alert('blad')
  12. }
  13.  
  14. }
  15. });
  16. }


A w przycisku

  1. <input type="submit" onclick="cos();">


Sorry że tak zawracam tyłek no ale lewy jestem w tych sprawach
lobopol
Jakby nie patrzeć to podstawy z jquery zrób to:
[JAVASCRIPT] pobierz, plaintext
  1. $(function(){
  2. $('#idformularza').submit(function(){
  3. $.ajax({
  4. url: "mail.php",
  5. data: $(this).serialize(),
  6. type: "POST",
  7. success: function(zwrot){
  8. alert(zwrot)
  9. },
  10. error: function(){
  11. alert('blad')
  12. }
  13.  
  14. });
  15. return false;
  16. });
  17.  
  18. })
[JAVASCRIPT] pobierz, plaintext


  1. <form id = "idformularza"> reszta forma z submitem
Dominator
Dzięki. Ogarnąłem to wreszcie. Plusy lecą smile.gif

Mam pewnien problem, nie chcę robić kolejnego tematu więc zamieszczam niżej kod. Mam pytanie - czemu mail nie jest wysyłany ? Co jest źle ?

PS: Adresy email zmieniłem na "@mail.pl"

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="http://code.jquery.com/jquery-latest.js"></script>
  5. </head>
  6. <body>
  7. <form action="/" id="forma" method="POST">
  8. <input type="text" name="od" value="Od kogo" onclick="this.value=''"><br>
  9. <input type="text" name="temat" value="Temat" onclick="this.value=''"><br>
  10. <input type="text" name="wiadomosc" value="Wiadomosc" onclick="this.value=''">
  11. <input type="submit" name="przycisk" value="Wyslij" />
  12. </form>
  13.  
  14. <script>
  15. $(function(){
  16. $('#forma').submit(function(){
  17. $.ajax({
  18. url: "index.php?s=a",
  19. data: $(this).serialize(),
  20. type: "POST",
  21. success: function(){
  22. alert("ss")
  23. },
  24. error: function(){
  25. alert('blad')
  26. }
  27.  
  28. });
  29. return false;
  30. });
  31.  
  32. })
  33. </script>
  34.  
  35. </body>
  36. </html>
  37.  
  38. <?php
  39. if($_GET["s"] == "a"){
  40. if(isSet($_POST["przycisk"])){
  41.  
  42. $odkogo = $_POST["od"];
  43. $temat = $_POST["temat"];
  44. $mess = $_POST["wiadomosc"];
  45.  
  46.  
  47. $naglowki = "Reply-to: tech@mail.pl <tech@mail.pl>".PHP_EOL;
  48. $naglowki .= "From: tech@mail.pl <tech@mail.pl>".PHP_EOL;
  49. $naglowki .= "MIME-Version: 1.0".PHP_EOL;
  50. $naglowki .= "Content-type: text/html; charset=iso-8859-2".PHP_EOL;
  51.  
  52. $wiadomosc = $mess;
  53.  
  54.  
  55. if(mail('mail@mail.pl', $temat, $wiadomosc, $naglowki))
  56. {
  57. echo 'Wiadomosc zostala wyslana';
  58. }
  59. }
  60. }
  61. ?>
lobopol
A masz serwer mailowy włączony? Do testów polecam smtp4dev
Dominator
Gdy daję takie coś to wysyła mi maile ...

  1. <?php
  2. // The message
  3. $message = "Line 1\nLine 2\nLine 3";
  4.  
  5. // In case any of our lines are larger than 70 characters, we should use wordwrap()
  6. $message = wordwrap($message, 70);
  7.  
  8. // Send
  9. mail('caffeinated@example.com', 'My Subject', $message);
  10. ?>


Nie wiem co się dzieje sad.gif
lobopol
  1. $naglowki = 'MIME-Version: 1.0' . "\r\n";
  2. $naglowki.= 'Content-type: text/html; charset=iso-8859-2' . "\r\n";
  3. $naglowki.= 'From: aaaaa<aaaaa@aaaa.pl>' . "\r\n";


A najlepiej użyj np klasy phpmailer
Dominator
Nie wiem w czym tkwił błąd, ale naprawiłem, dzięki wam za pomoc smile.gif
piotrooo89
problem tkwił w tym że PHP_EOL zwracał Ci znak nowej linii zgodny z platformą na jakiej masz system natomiast charakterystyka SMTP wymaga aby zawsze do nowej linii było dołączane \r\n (CRLF).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.