Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] Zmienne przesyłane są GETem mimo deklarowania metody POST
Forum PHP.pl > Forum > XML, AJAX > AJAX
rozny
Witam, popełniłem z pomocą googla taki kod:

  1. function wyslijDane()
  2. {
  3. xmlhttp=GetXmlHttpObject();
  4.  
  5. var distList = document.getElementById("dist_list").value;
  6. var selectTemplate = document.getElementById("select_template").value;
  7. var postSubject = document.getElementById("subject").value;
  8. var postContent = document.getElementById("tresc").value;
  9. var btnWyslij = document.getElementById("wyslij");
  10.  
  11. var url = "send_newsletter.php";
  12. url = url+"?dist_list=" + encodeURIComponent(distList) + "&";
  13. url += "select_template=" + encodeURIComponent(selectTemplate) + "&";
  14. url += "subject=" + encodeURIComponent(postSubject) + "&";
  15. url += "tresc=" + encodeURIComponent(postContent) + "&";
  16. url += "&sid="+Math.random();
  17.  
  18. xmlhttp.open("POST",url,true);
  19. xmlhttp.send(null);
  20. btnWyslij.disabled = true;
  21. xmlhttp.onreadystatechange=stateChanged;
  22.  
  23. }
  24.  
  25. function stateChanged()
  26. {
  27. if (xmlhttp.readyState==4)
  28. {
  29.  
  30. document.getElementById("head").style.display="block";
  31. document.getElementById("head").innerHTML= "Wysyłanie newslettera...<br />";
  32. document.getElementById("head").innerHTML=xmlhttp.responseText;
  33. document.getElementById("template").onmouseout=function() {
  34. document.getElementById("head").style.display="none";
  35. }
  36.  
  37. }
  38. }
  39.  
  40. function GetXmlHttpObject()
  41. {
  42. if (window.XMLHttpRequest)
  43. {
  44. return new XMLHttpRequest();
  45. }
  46. return null;
  47.  
  48.  
  49. }


Zmienne są przekazywane do pliku send_newsletter.php, ale metodą GET, a ja chcę to przesłać POSTem. Wydawało mi się, że xmlhttp.open("POST",url,true); załatwia temat, ale tak nie jest. Dopiero raczkuje w AJAXie i nie do końca łapię zasady, które tym sterują. Proszę o nakierowanie mnie gdzie robię błąd.

Pozdrawiam
Sephirus
[JAVASCRIPT] pobierz, plaintext
  1. xmlhttp.open("POST",url,true);
  2. xmlhttp.send(null); // NULL się ustawia raczej przy GET ;)
[JAVASCRIPT] pobierz, plaintext


Ty wszelkie parametry przekazujesz jako GET bo dodajesz je do URL i tworzysz "url/?a=1&b=2&c=3" itd...

Zrób inaczej. Podaj w open URL czysty (bez getów) a wszelkie parametry wysyłane wrzuć do xmlhttp.send('tutaj') w formie takiej jak przy adresie w GET wink.gif

Napisałbym to za Ciebie bo to proste ale pomęcz się troszkę wink.gif
rozny
Poprawiłem, ale nie pomogło :|

  1. var url = "send_newsletter.php";
  2. var params = "?dist_list=" + encodeURIComponent(distList) + "&";
  3. params += "select_template=" + encodeURIComponent(selectTemplate) + "&";
  4. params += "subject=" + encodeURIComponent(postSubject) + "&";
  5. params += "tresc=" + encodeURIComponent(postContent) + "&";
  6. params += "&sid="+Math.random();
  7.  
  8. xmlhttp.open("POST",url,true);
  9. xmlhttp.send(params);
  10. btnWyslij.disabled = true;
  11. xmlhttp.onreadystatechange=stateChanged;
Sephirus
Daj bez "?" na początku parametry wink.gif
rozny
i tak wysyła GET'em...

EDIT: Poprawka. Nie wysyła ani postem, ani getem (questionmark.gif?) W skrypcie dałem warunki if ($_POST) i if ($_GET) i nie reaguje na żadnego ifa...

  1. function wyslijDane()
  2. {
  3. xmlhttp=GetXmlHttpObject();
  4.  
  5. var distList = document.getElementById("dist_list").value;
  6. var selectTemplate = document.getElementById("select_template").value;
  7. var postSubject = document.getElementById("subject").value;
  8. var postContent = document.getElementById("tresc").value;
  9. var btnWyslij = document.getElementById("wyslij");
  10.  
  11. var url = "send_newsletter.php";
  12. var params = "dist_list=" + encodeURIComponent(distList) + "&";
  13. params += "select_template=" + encodeURIComponent(selectTemplate) + "&";
  14. params += "subject=" + encodeURIComponent(postSubject) + "&";
  15. params += "tresc=" + encodeURIComponent(postContent) + "&";
  16. params += "&sid="+Math.random();
  17.  
  18. xmlhttp.open("POST",url,true);
  19. xmlhttp.send("params");
  20. btnWyslij.disabled = true;
  21. xmlhttp.onreadystatechange=stateChanged;
  22.  
  23. }
  24.  
  25. function stateChanged()
  26. {
  27. if (xmlhttp.readyState==4)
  28. {
  29.  
  30. document.getElementById("head").style.display="block";
  31. document.getElementById("head").innerHTML= "Wysyłanie newslettera...<br />";
  32. document.getElementById("head").innerHTML=xmlhttp.responseText;
  33. document.getElementById("template").onmouseout=function() {
  34. document.getElementById("head").style.display="none";
  35. }
  36.  
  37. }
  38. }
  39.  
  40. function GetXmlHttpObject()
  41. {
  42. if (window.XMLHttpRequest)
  43. {
  44. return new XMLHttpRequest();
  45. }
  46. return null;
  47.  
  48.  
  49. }


send_newsletter.php:

  1. <?php
  2.  
  3. //--------------------- SETTINGS AREA ---------------------//
  4.  
  5. require_once('system/db_settings.php');
  6. require_once('system/errors.php');
  7. require_once('functions.php');
  8. require_once('PHPMailer/class.phpmailer.php');
  9.  
  10. //--------------------- CONNECTION AREA ---------------------//
  11.  
  12. @mysql_connect ( $host,$username,$password ) or displayError(1);
  13. @mysql_select_db ( $database ) or displayError(2);
  14. @mysql_query("SET NAMES 'UTF8'");
  15.  
  16. //--------------------- WORKING AREA ---------------------//
  17.  
  18. if ($_POST) {
  19.  
  20. $list_id = (int)$_POST['dist_list'];
  21.  
  22. if (empty($_POST['select_template'])) {
  23.  
  24. $template_thumb = '1';
  25.  
  26. }
  27.  
  28. else {
  29.  
  30. $template_thumb = (int)$_POST['select_template'];
  31.  
  32. }
  33.  
  34. $subject = trim($_POST['subject']);
  35. $content = trim(bb2html($_POST['tresc']));
  36.  
  37. $template = @mysql_fetch_assoc(@mysql_query("SELECT body FROM `templates` WHERE id=".$template_thumb)) or displayError(3);
  38.  
  39. $body = str_replace("[content]", $content, $template['body']);
  40. $body = str_replace("[title]", $subject, $body);
  41.  
  42. $mail = new PHPMailer();
  43. $mail->IsSMTP();
  44. $mail->Host = "***; ***";
  45. $mail->SMTPAuth = true;
  46. $mail->SMTPKeepAlive = true;
  47. $mail->Host = "***";
  48. $mail->Port = 587;
  49. $mail->Username = "***";
  50. $mail->Password = "***";
  51. $mail->SetFrom('***', 'Newsletter');
  52. $mail->AddReplyTo('***', 'Newsletter');
  53. $mail->Subject = "$subject";
  54.  
  55. $query = @mysql_query("SELECT `email_id` FROM distribution_lists WHERE id = ".$list_id) or displayError(3);
  56.  
  57. $mail_list = @mysql_fetch_assoc($query);
  58.  
  59. $query = @mysql_query("SELECT * FROM `users` WHERE id IN ('$mail_list[email_id]') AND verify_status = '1' AND send_status = 'to_send'") or displayError(3);
  60.  
  61. $get_list = @mysql_query("SELECT `email_id` FROM distribution_lists WHERE id = ".$list_id) or displayError(3);
  62.  
  63. $mail_list = @mysql_fetch_assoc($get_list);
  64.  
  65. $get_emails = @mysql_query("SELECT * FROM `users` WHERE id IN ($mail_list[email_id]) AND verify_status = '1' AND send_status = 'to_send'") or displayError(3);
  66.  
  67. $i = 0;
  68. $porcja = 1;
  69. $wyslane = 0;
  70. $niewyslane = 0;
  71.  
  72. echo '<div class="listing">';
  73.  
  74. while ($row = @mysql_fetch_assoc($get_emails)) {
  75. echo 'Wysłano: '.$wyslane.'<br />';
  76. echo 'Błąd wysyłania: '.$niewyslane.'<br />';
  77.  
  78. if ($i == 10) {
  79.  
  80. echo '<p>Wysłano newsletter pod '.$porcja.' porcję adresów.</p><br />';
  81. $mail->AltBody = "Otwórz tę wiadomość aplikacją obslugującą wiadomości HTML";
  82. $mail->MsgHTML($body);
  83. $mail->AddAddress($row['email'], $row['name']);
  84.  
  85. if(!$mail->Send()) {
  86.  
  87. echo "Błąd (" . str_replace("@", "@", $row['email']) . ')<br /> ' . $mail->ErrorInfo . '<br />';
  88. $niewyslane++;
  89.  
  90. }
  91.  
  92. else {
  93.  
  94. echo "Wiadomość wysłana do: " . $row["name"] . ' (' . str_replace("@", "@", $row["email"]) . ')<br />';
  95. $update = @mysql_query("UPDATE `users` SET send_status = 'sent' WHERE email = '$row[email]'") or displayError(3);
  96.  
  97. if (!$update) {
  98.  
  99. displayError(4);
  100.  
  101. echo $row[email];
  102.  
  103. }
  104.  
  105. else {
  106.  
  107. $mail->ClearAddresses();
  108. $mail->ClearAttachments();
  109. $wyslane++;
  110.  
  111. }
  112.  
  113.  
  114. }
  115. $i = 0;
  116. $porcja++;
  117. sleep(15);
  118.  
  119. }
  120.  
  121. else {
  122.  
  123. $mail->AltBody = "Otwórz tę wiadomość aplikacją obslugującą wiadomości HTML";
  124. $mail->MsgHTML($body);
  125. $mail->AddAddress($row['email'], $row['name']);
  126.  
  127. if(!$mail->Send()) {
  128.  
  129. echo "Błąd (" . str_replace("@", "@", $row['email']) . ')<br /> ' . $mail->ErrorInfo . '<br />';
  130. $niewyslane++;
  131.  
  132. }
  133.  
  134. else {
  135.  
  136. echo "Wiadomość wysłana do: " . $row["name"] . ' (' . str_replace("@", "@", $row["email"]) . ')<br />';
  137. $update = @mysql_query("UPDATE `users` SET send_status = 'sent' WHERE email = '$row[email]'") or displayError(3);
  138.  
  139. if (!$update) {
  140.  
  141. displayError(4);
  142.  
  143. echo $row[email];
  144.  
  145. }
  146.  
  147. else {
  148.  
  149. $mail->ClearAddresses();
  150. $mail->ClearAttachments();
  151. $wyslane++;
  152. $i++;
  153.  
  154. }
  155.  
  156.  
  157. }
  158.  
  159. }
  160. }
  161. echo '</div>';
  162. }
  163.  
  164.  
  165.  
  166. if ($_GET) {
  167.  
  168. header("Location: index.php");
  169.  
  170. }
  171.  
  172. else {
  173.  
  174. echo '#@!&@&@#!';
  175.  
  176. }
  177.  
  178. ?>


help?! sciana.gif
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.