Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: [ajax]/[php]XMLHttpRequest
Forum PHP.pl > Forum > XML, AJAX > AJAX
Lejto
Mam kod prostego shoutboxa. Dodałem do niego odrobinę ajaxa. Przy włączeniu skryptu pokazuje się Ładuję i jak skończy ładować to pojawią się wpisy i formularz jak skończy ładować to napis Ładuję zniknie. To działa poprawnie w IE jednak w firefoksie pokaże wpisy ale nie pokaże formularza a napis Ładuje nie znika.
Kod:
  1. <?
  2. ?>
  3.  <!DOCTYPE html 
  4. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  7. <head>
  8. <link href="css/1c.css" type="text/css" rel="stylesheet" media="screen"> 
  9.  
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  11.  
  12. <script type="text/javascript">
  13. // Copyright: Š 2008 Lukasz Ogan
  14. //Š Lukasz Ogan, 2008 : All Rights Reserved
  15. //rozpowszechnianie bez tego komentarza zabronione
  16.  
  17. // przechowuje obiekt XMLHttpRequest
  18. var xmlHttp = createXmlHttpRequestObject();
  19.  
  20. // tworzy obiekt XMLHttpRequest
  21. function createXmlHttpRequestObject() 
  22. {
  23. // przechowa odwoanie do obiektu XMLHttpRequest
  24. var xmlHttp;
  25. // powinno dziać dla wszystkich przegldarek z wyjtkiem IE6 i starszych
  26. try
  27. {
  28. // prbuje utworzy obiekt XMLHttpRequest
  29. xmlHttp = new XMLHttpRequest();
  30. }
  31. catch(e)
  32. {
  33. // w przypadku, gdy przegldark jest IE6 lub starsza
  34. var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
  35.  "MSXML2.XMLHTTP.5.0",
  36. "MSXML2.XMLHTTP.4.0",
  37. "MSXML2.XMLHTTP.3.0",
  38. "MSXML2.XMLHTTP",
  39. "Microsoft.XMLHTTP");
  40. // sprawdza kady identyfikator programu, a jeden zadziaa
  41. for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
  42. {
  43. try 
  44. // prbuje utworzy obiekt XMLHttpRequest
  45. xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
  46. catch (e) {}
  47. }
  48. }
  49. // zwraca utworzony obiekt lub wywietla komunikat o bdzie
  50. if (!xmlHttp)
  51. alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  52. else 
  53. return xmlHttp;
  54. }
  55.  
  56.  
  57. function display($message)
  58. {
  59. // pobiera odwoanie do elementu <div> na stronie
  60. myDiv = document.getElementById("myDivElement");
  61. // wywietla komunikat
  62. myDiv.innerHTML = $message + "<br/>";
  63. }
  64.  
  65. // funkcja wywietlajca komunikat o bdzie
  66. function displayError($message)
  67. {
  68. // wywietla szczegy techniczne bdu jeli debugMode ma warto true
  69. display("Błąd podczas otrzymywania wiadomoci! Sprbuj za " +
  70. errorRetryInterval + " sekund." + (debugMode ? "<br/>" + $message : ""));
  71. // ponawia sekwencj
  72. setTimeout("process();", errorRetryInterval * 1000);
  73. }
  74.  
  75. function process()
  76. {
  77. // kontynuuje tylko jeli obiekt xmlHttp istnieje
  78. if (xmlHttp)
  79. {
  80. // prbuje poczy si z serwerem
  81. try
  82. {
  83. // inicjalizacja odczytu pliku async.txt z serwera
  84. display("Ładuję <img src=\"images/loading.gif\" width=\"17\" height=\"17\">")
  85. xmlHttp.open("GET", "shoutbox.php", true);
  86. xmlHttp.onreadystatechange = handleRequestStateChange;
  87. xmlHttp.send(null);
  88. }
  89. // w przypadku niepowodzenia wywietla komunikat o bdzie
  90. catch (e)
  91.  { 
  92. }
  93.  }
  94. }
  95.  
  96. // funkcja obsugujca odpowied http
  97. function handleRequestStateChange() 
  98. {
  99.  
  100. // kiedy readyState ma wartość 4, jestemy gotowi do odebrania odpowiedzi z Sewera
  101. if (xmlHttp.readyState == 4) 
  102. {
  103. // kontynuuje tylko, gdy status HTTP ma warto "OK"
  104. if (xmlHttp.status == 200) 
  105. {
  106. try
  107. {
  108. // przetwarza wiadomo z serwera
  109. // czyta wiadomo wysan z serwera
  110. response = xmlHttp.responseText;  
  111. myDiv.innerHTML += response;
  112.  display(response);
  113. }
  114. catch(e)
  115. {
  116. // komunikat o bdzie
  117. displayError(e.toString());
  118. }
  119. else
  120. {
  121. // komunikat o bdzie
  122. displayError(xmlHttp.statusText);  
  123. }
  124. }
  125. }
  126.  
  127. </script> 
  128. </head>
  129. <body onLoad='process()'>
  130.  
  131. <div id="myDivElement" />
  132.  
  133. <?php
  134.  
  135. require('funkcje.inc.php');
  136.  
  137. $c = new funkcje();
  138.  
  139.  
  140. require("funkcje_bazy.class.php");
  141.  
  142.  
  143. $b = new mysql(); 
  144.  
  145. $autor = $_POST['autor'];
  146. $tresc = $_POST['tresc'];
  147.  
  148. $b->db_connect(); 
  149. $b->db_select();
  150.  
  151. if(!isset($_POST[$lol])) { 
  152. $sql = "SELECT * FROM shoutbox order by id desc"; 
  153. $query = mysql_query($sql);
  154. if($rows = mysql_num_rows($query) == 0){
  155. echo "<font size=2px>";
  156. echo "Brak shot'w :(";
  157. echo "<p></p>";
  158. echo "</font>";
  159. }
  160.  
  161. $rows = mysql_num_rows($query);
  162.  
  163.  for($i=0; $i < $rows; $i++)
  164. {
  165.  
  166. $row = mysql_fetch_array($query);
  167. $row[tresc]=$b->cenzura($row[tresc], '<br />');
  168. $row[tresc]=$b->buzki($row[tresc], '<br />'); 
  169. $row[autor]=strip_tags($row[autor], '<br />');
  170.  
  171. //dodanie licznika postw ktry graweruje kolor usera nie wiem czy musi to by w for 
    :-)
  172. $sql2 = mysql_query("SELECT * FROM uzytkownik WHERE user = '$row[autor]'"); 
  173. $wiersz = mysql_fetch_array($sql2);
  174. $ile_postow = $wiersz[postow];
  175.  
  176.  //kod[..]
  177.  
  178.  
  179. echo "<table bgcolor=#ffffff style='font-size:11px;' width=100%>";
  180.  
  181. if(@$i % 2 == 0)
  182. {
  183.  
  184.  echo "<tr><td bgcolor=#ffffff>";
  185. echo "<font face=verdana>";
  186.  if($row[numer] > 0)
  187. {
  188.  
  189.  echo "<span id=poczta_href><a href=\"index.php?kto=pokaz&id=$row[numer]\" target=\"_top\"
  190. onMouseover=\"ddrivetip('Poka profil')\"; onMouseout=\"hideddrivetip()\">  
  191. <font color=\"$color\">$row[autor]</font></a></span>: ";
  192.  
  193. }
  194. else
  195. {
  196.  echo "$row[autor]: ";
  197.  
  198. }
  199.  echo "$row[tresc]";
  200.  echo "</font>";
  201.  
  202. }
  203. else
  204. {
  205.  echo "<tr><td bgcolor=#C1C1C1>";
  206. echo "<font face=verdana>";
  207.  
  208. if($row[numer] > 0)
  209. {
  210.  echo "<span id=poczta_href><a href=\"index.php?kto=pokaz&id=$row[numer]\" target=\"_top\" title=\"Poka profil\">
  211.  <font color=\"$color\">$row[autor]</font></a></span>: ";
  212. }
  213. else
  214. {
  215.  echo "$row[autor]: ";
  216.  
  217. }
  218. echo "$row[tresc]";
  219. echo "</font>";
  220. }  
  221.  
  222.  
  223.  
  224. echo "</font>";
  225. echo "<br>";
  226. echo "</tr></td>";
  227. echo "</table>";
  228. }
  229. }
  230. ?>
  231.  
  232. </td></tr>
  233. <table align="left">
  234. <form action="shoutbox.php" method="post">
  235. <tr><td>
  236.  
  237.  
  238.  <?php
  239.  if(isset($_SESSION['prawid_uzyt'])){
  240.  
  241.  $nazwa = ($_SESSION['prawid_uzyt']);
  242.  
  243.  $sql = "SELECT * FROM uzytkownik where user = '$nazwa'";
  244.  $query = mysql_query($sql);
  245.  $row = mysql_fetch_array($query);
  246.  
  247.  $numer = $row[id];
  248.  ?>
  249.  <input type="hidden" name="autor" value="<? echo ($nazwa);?>" />
  250.  <?
  251.  }else{
  252.  
  253. ?>
  254.  <font size="2"> Nick:</font> </td><td>
  255.  <input size="21" cols="50" maxlength="30" type="text" id="autor" name="autor" maxlength="10" >
  256.  <?
  257.  }
  258.  ?> </td><td>
  259. </td><tr><td>
  260. <font size="2"><font face=verdana> Treść:</font></font></td><td><textarea id="tresc" name="tresc" type="tresc" rows="3" cols="20">
  261. </textarea>
  262. </td></tr>
  263. <tr><td>
  264. </td><td>
  265. <input type="submit" name="post" value="Mów!"></form></tr></table>  
  266.  
  267. <?php
  268. if (!$tresc && !$autor){
  269.  
  270.  }
  271.  else{
  272.  
  273.  
  274.  
  275. if(isset($_SESSION['prawid_uzyt'])){ 
  276.  
  277.  
  278.  
  279.  $sql = mysql_query("select * from uzytkownik where user = '".$_SESSION['prawid_uzyt']."'");
  280.  $query = mysql_query($sql);
  281.  $row = mysql_fetch_array($sql);
  282.  $numer_usera = $row[id]; //pobranie id usera
  283.  
  284. $ile_postow = $row[postow]; //pobranie liczbt postw usera
  285.  
  286. //kod[..]
  287.  
  288.  $sql="update uzytkownik set postow=postow+1 where id = '$numer_usera'";
  289. $wynik=mysql_query($sql);
  290. if(!$sql)
  291. {
  292.  echo'Bd w bazie MySQL!<br>';
  293.  echo mysql_errno() . ": " . mysql_error(). "\n"; exit;
  294. }
  295.  
  296. // koniec modyfikacji 
  297. }
  298.  $ip = $_SERVER['REMOTE_ADDR']; 
  299. {
  300.  
  301. $autor = addslashes($autor);
  302. $tresc = addslashes($tresc);
  303.  
  304. }
  305. $sql = "INSERT INTO shoutbox(autor, tresc, ip, numer, postow, kolor) VALUES ('".htmlspecialchars($autor)."', '".htmlspecialchars($tresc)."', '".$ip."', '".$numer."', '".$ile_postow."', '".$color."')";
  306.  $query = mysql_query($sql);
  307.  if(!$query)
  308.  {
  309.  echo 'Błąd<br>';
  310.  }
  311.  
  312.  
  313. header("location: shoutbox.php");
  314.  
  315. }
  316.  
  317. ?>
  318. </body>
  319. </html>
pyro
zabrakło ci czegoś i zastosowałeś to w całym skrypcie smile.gif

przykład:
  1. <?php
  2. $row[tresc]=$b->cenzura($row[tresc], '<br />');
  3. $row[tresc]=$b->buzki($row[tresc], '<br />'); 
  4. $row[autor]=strip_tags($row[autor], '<br />');
  5.  
  6. //dodanie licznika postw ktry graweruje kolor usera nie wiem czy musi to by w for 
    :-)
  7. $sql2 = mysql_query("SELECT * FROM uzytkownik WHERE user = '$row[autor]'"); 
  8. $wiersz = mysql_fetch_array($sql2);
  9. $ile_postow = $wiersz[postow];
  10. ?>


np. takie $row[tresc]; powinno miec postac $row['tresc'];
Poprostu nie dales cudzyslowow tam gdzie trzeba
Lejto
no tak, ale to chyba nie ma nic do tego z czym mam problem
pyro
a sprawdziles?
MMPrime
FireFox ma bardzo dobr± konsolê b³êdów która powinna Ci podpowiedzieæ co jest nie tak, wska¿e linijkê jak i odpowiedni± kolumnê. Nic tylko korzystaæ.
Lejto
@MMPrime korzystałem już i nic nie ma
edit: pokazało się w konsoli:
syntax error wiersz:1

rozwi±za³em problem z ³adowaniem w firefoxie (formularz siê pokazuje) jednak teraz formularz nie dzia³a naciskam przycisk wysy³aj±cy i nic (w IE dzia³a)
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.