Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Post action - problem
Forum PHP.pl > Forum > PHP
Fajka
Witam wszystkich,

Bardzo proszę o pomoc, walczę z tym już nie wiem ile, i się dzisiaj definitywnie poddaje. Nie wiem co jest nie tak.

Problem polega na tym, że oneclick wywołuje funkcję php i niestety co najgorsze, nie odpala się ona zawsze, wygląda to tak, że raz działa, a raz nie i nie ma tutaj znaczenia przeglądarka.

Przykład:

W bloku head mam:
<script type="text/javascript" src="js/functions.js"></script>

W bloku php mam:
1. posta action
// wyrzucenie wiadomości
IF ($_POST['action'] == 'set_delete')
{
$update = "UPDATE CHAT SET is_active = 1 WHERE id = ".$_GET['id'];
$mysql_result = mysql_query($update);
IF (!$mysql_result){get_errors($_SESSION['userid'], 'CHAT.PHP -> POST -> SET_DELETE');}
}

2. wywołanie onclickiem:
<div id="chat_warn" onclick="f_template('<?=C95?>', 'set_delete', 'chat', '<?="&id=".$i['id']?>')"><?=C95?></div>
gdzie C95 to pobieranie tekstu w zależności od aktualnej wartości języka.

3. funkcja f_template znajduje się w js/functions.js:
/* CONFIRM */
function f_template(f_confirm, f_action, f_site, f_condition)
{
var v_params = "action="+f_action;
var v_xmlhttp;

if (window.XMLHttpRequest)
{
v_xmlhttp = new XMLHttpRequest();
} else
{
v_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

if (f_confirm=='')
{
var v_statement = true;
}
else
{
var v_statement = confirm(f_confirm);
}

if (v_statement==true)
{
v_xmlhttp.open("POST","logged.php?subpage="+f_site+f_condition,true);
v_xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
v_xmlhttp.setRequestHeader("Content-length", v_params.length);
v_xmlhttp.send(v_params);
}
setTimeout(function(){

window.location.reload();

},60);
}

Podsumowując:
Mam podstronę na której chce wywołać sobie set_delete w onclick wywołuje funkcje javascript którą wracam ponownie do tej podstrony na której wywoływałem bo znajduje się tam instrukcja funkcji (post action) która ma wykonać pewne operacje na bazie.

Bardzo proszę o pomoc. Czemu to raz zdziała a raz nie? Jak nie działa to wygląda to tak, że przeładowuje coś ale nie wchodzi w tego post action. Powiedzmy raz na 20 razy jak się kliknie zadziała. Czasami w ogóle nie działa, a czami kilka razy pod rząd działa.
trueblue
W ogóle nie czekasz na wynik działania żądania Ajax - przeładowujesz stronę po 60 ms.
Skorzystaj z właściwości onreadystatechange obiektu ajaxowego.
Fajka
Dzięki.

v_xmlhttp.onreadystatechange = function()
{
setTimeout(function(){
window.location.reload();
},1);
}

Czy jak zrobię coś takiego będzie ok? Niby tak zrobiłem i działa, ale mogłem akurat załapać się na ten moment co wchodzi.
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.