Я работаю над «модулем подписки» для веб-сайта, все работает отлично, кроме
Ajax.Странное поведение после ajax call
Когда я нажимаю первый время на «подписаться» кнопка меняется на «отписать», но если я нажмите на кнопку «отписаться» снова без перезагрузки страницы, кнопка меняется на «подписаться» и чем " отменить подписку ".
Как если бы я дважды щелкнул его.
Это то, что я могу видеть из "хром -> вкладка сети"
engine/ajax/mywatch.php?subscribe_id=3385&action=plus&skin=Default
engine/ajax/mywatch.php?subscribe_id=3385&action=minus&skin=Default
HTML
<a id="subscript-id-3385" onclick="doMywatch('3385', 'plus'); return false;" >subscribe</a>
Javascript
<script>
function doMywatch(a,b){ShowLoading("");$.get(root+"engine/ajax/mywatch.php",{subscribe_id:a,action:b,skin:skin},function(b){HideLoading("");$("#subscript-id-"+a).html(b)});return!1}
</script>
PHP
if($_GET['action'] == "plus") {
echo <<<HTML
<script>
alert('plus ');
</script>
HTML;
$row = $db->super_query("SELECT subscriptions FROM " . PREFIX . "_mywatch WHERE user_id={$member_id['user_id']}");
$list = explode(",", $row['subscriptions']);
foreach ($list as $daten) {
if($daten == $id) $achecker = "stop";
}
$error = "";
if($achecker != "stop"){
$list[] = $id;
$subsc = $db->safesql(implode(",", $list));
//$subsc = implode(",", $list);
if($row['subscriptions'] == "") $subsc = $id;
$db->query("UPDATE " . PREFIX . "_mywatch set subscriptions='$subsc' where user_id = '{$member_id['user_id']}'");
}
$buffer = "<a onclick=\"doMywatch('" . $id . "', 'minus'); \" title=\"" . $lang['news_minfav'] . "\">unsubscribe</a>";
} elseif($_GET['action'] == "minus") {
echo <<<HTML
<script>
alert('minus ');
</script>
HTML;
$error = "";
$row = $db->super_query("SELECT subscriptions FROM " . PREFIX . "_mywatch WHERE user_id={$member_id['user_id']}");
$list = explode(",", $row['subscriptions']);
foreach ($list as $daten) {
if($daten == $id) $achecker = "stop";
}
if($achecker == "stop"){
$list = array_merge(array_diff($list, array($id)));
$subsc = $db->safesql(implode(",", $list));
//$subsc = implode(",", $list);
$db->query("UPDATE " . PREFIX . "_mywatch set subscriptions='$subsc' where user_id = '{$member_id['user_id']}'");
}
$buffer = "<a onclick=\"doMywatch('" . $id . "', 'plus'); \" title=\"" . $lang['news_minfav'] . "\">Подписатся</a>";
} else
die("error");
$db->close();
@header("Content-type: text/html; charset=" . $config['charset']);
echo $buffer;
Можете ли вы отформатировать код с разрывами строк и пробелами? Код, который действительно читается, заставляет людей больше желать тратить время на вашу проблему. –