Mam duzy problem. Chciałem aby dodanie wpisu shouta było bez odświeżenia strony. Plik php:
  1. <? 
  2. switch($_GET['xcmd'])
  3. {
  4. default: echo '<div id="shout"></div><div id="shout_add"></div><input type="text" id="form" name="form" class="input" /><input type="button" onclick="shout_add();" value="Dodaj" class="input" />'; break;
  5. case 'add': 
  6.  
  7. $q=$q."INSERT INTO $tbl[shout] SET shout_tekst='$_POST[text]', shout_time='".time()."', shout_email='user', shout_autor='$session_n', shout_ip=''";
  8. echo $q;
  9. if($q) { echo 'Wpis dodany poprawnie'; } else { echo 'Nie dodano wpisu'.$db->get_error(); }
  10.  
  11. break;
  12. case 'view': 
  13. $q=mysql_query("SELECT * FROM $tbl[shout] ORDER BY shout_time DESC LIMIT 5");
  14. $tpl->read('shout');
  15. while($r=mysql_fetch_assoc($q))
  16. {
  17. $data = date($config['shout_data'], $r['shout_time']);
  18. if($r['shout_email']=='user')
  19. {
  20. $autor=$info[4][$r['shout_autor']];
  21. }
  22. else
  23. {
  24. $autor='<a href="mailto:'.$r['shout_email'].'">'.$r['shout_autor'].'</a>';
  25. }
  26. $tpl->load(array("AUTOR" => $autor, "TEKST" => $r['shout_tekst'], "DATA" => $data));
  27. echo $tpl->give();
  28.  
  29. }
  30.  break;
  31.  
  32. }
  33. ?>
I funkcja ajaxa:

  1.      function shout_add(text)
  2.      {
  3.      
  4.      advAJAX.post({
  5.                  url: "index.php?site=shout&ajax=ok&xcmd=add",
  6.                   parameters : {
  7.                  "text": $("form").value,
  8.                  },
  9.                  onSuccess :
  10.                        function(obj) {
  11.                        $("shout_add").innerHTML = $("shout_add").innerHTML+obj.responseText;
  12.                        },
  13.                  onError :
  14.                        function(obj) { alert("Error: " + obj.status);  $("shout").style.border = "1px dotted red"; }
  15.                              });            
  16.                  
  17.      }
  18.      function shout()
  19.      {
  20.      advAJAX.post({
  21.                  url: "index.php?site=shout&ajax=ok&xcmd=view",
  22.                   parameters : {
  23.                  "ajax": "ok"
  24.                  },
  25.                  onSuccess :
  26.                        function(obj) {
  27.                        $("shout").innerHTML = obj.responseText;
  28.                        $("shout_add").innerHTML = "";
  29.                        },
  30.                  onError :
  31.                        function(obj) { alert("Error: " + obj.status);  $("shout").style.border = "1px dotted red"; }
  32.                              });
  33.                              setTimeout("shout()",5000)      
  34.      }
  35.      shout();
  36.      
I gdy dodaje sobie wpis, dodaje sie on dwa razy sad.gif A gdy wyswietlam (tak jak pokazalem0 tez wyswietla się dwa razy ;( TO chyba cos z ajaxem a ja nie wiem co ;/