Mam duzy problem. Chciałem aby dodanie wpisu shouta było bez odświeżenia strony. Plik php:
<?
switch($_GET['xcmd'])
{
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; case 'add':
$q=$q."INSERT INTO $tbl[shout] SET shout_tekst='$_POST[text]', shout_time='".time()."', shout_email='user', shout_autor='$session_n', shout_ip=''"; if($q) { echo 'Wpis dodany poprawnie'; } else { echo 'Nie dodano wpisu'.$db->get_error(); }
break;
case 'view':
$q=mysql_query("SELECT * FROM $tbl[shout] ORDER BY shout_time DESC LIMIT 5"); $tpl->read('shout');
{
$data = date($config['shout_data'], $r['shout_time']); if($r['shout_email']=='user')
{
$autor=$info[4][$r['shout_autor']];
}
else
{
$autor='<a href="mailto:'.$r['shout_email'].'">'.$r['shout_autor'].'</a>';
}
$tpl->load(array("AUTOR" => $autor, "TEKST" => $r['shout_tekst'], "DATA" => $data));
}
break;
}
?>
I funkcja ajaxa:
function shout_add(text)
{
advAJAX.post({
url: "index.php?site=shout&ajax=ok&xcmd=add",
parameters : {
"text": $("form").value,
},
onSuccess :
function(obj) {
$("shout_add").innerHTML = $("shout_add").innerHTML+obj.responseText;
},
onError :
function(obj) { alert("Error: " + obj.status); $("shout").style.border = "1px dotted red"; }
});
}
function shout()
{
advAJAX.post({
url: "index.php?site=shout&ajax=ok&xcmd=view",
parameters : {
"ajax": "ok"
},
onSuccess :
function(obj) {
$("shout").innerHTML = obj.responseText;
$("shout_add").innerHTML = "";
},
onError :
function(obj) { alert("Error: " + obj.status); $("shout").style.border = "1px dotted red"; }
});
setTimeout("shout()",5000)
}
shout();
I gdy dodaje sobie wpis, dodaje sie on dwa razy

A gdy wyswietlam (tak jak pokazalem0 tez wyswietla się dwa razy ;( TO chyba cos z ajaxem a ja nie wiem co ;/