2015-11-17 7 views
2

Я запускаю Javascript/JQuery внутри php-кода. То, что он должен делать, - это когда кто-то выходит на страницу, проверяется сессия (если есть сеанс, они вошли в систему), и если есть сеанс, он превратит кнопку входа в кнопку выхода из системы, изменив класс. Я прочитал, что вам нужна делегация, но я не уверен, что делать, чтобы проверить сеанс. Вот проверка сессии/запустить скрипт Jquery:Класс JQuery add/remove не работает (неизвестное делегирование использовать)

<?php 

if (isset($_SESSION['mysession']) && $_SESSION['mysession'] == true) { 
echo "<script type='text/javascript'> $('.btna').addClass('.btnh'); 
     $('.btna').removeClass('.btna');</script>"; 
} 
     ?> 
<!DOCTYPE html> 
//html code 

«btna» и «btnf» классы кнопки. «btna» - это логин, «btnf» - это выход из системы. Вот код для кнопки выхода из системы:

<!DOCTYPE html> 

<head> 
    <link href="css/style.css" rel="stylesheet"> 
</head> 

<body> 
    <button type="submit" name="submit" class="btnh" placeholder="Logout"> 
     Logout 
    </button> 
</body> 

Я не связана моя кнопки в виде выхода из системы еще. Проблема даже в том, что мой сеанс установлен, кнопка входа в систему не меняет класс на кнопку выхода. Итак, какую делегацию я бы использовал в своем JQuery для проверки сессий и/или мой код JQuery правильно (с точки зрения точки с запятой, апострофы и т. Д.)?

EDIT: К сожалению, до сих пор ни один из этих ответов не преуспел до сих пор, но спасибо вам, ребята, за помощь. Однако, я думаю, что проблема кроется в другом месте в том, что я прошу. Он должен быть в HTML-коде для кнопки выхода из системы или где-то в CSS. Я буду продолжать искать, однако, если у вас есть предложение, пожалуйста, опубликуйте его.

EDIT 2: Если это имеет значение, моя кнопка выхода на другой странице, но связана с CSS. Вот какой-то новый PHP-код, который я сделал, может кто-нибудь понять, почему он не работает (он вообще не отображается). Это находится в разделе тела моей домашней страницы.

<?php 

    if (isset($_SESSION['flinders']) && $_SESSION['flinders'] == true) { 
     echo '<button type="submit" name="submit" class="btna" placeholder="Login">'; 
     echo     'Login'; 
     echo    '</button>'; 
    } 
     else{ 
      echo '<button type="submit" name="submit" class="btnh" placeholder="Logout">'; 
      echo    'Logout'; 
      echo   '</button>'; 
     } 
?> 
+0

Есть несколько ошибок, как я видел в первом чтении. – Jai

+1

addClass без точки класса. – Alteyss

+0

Зачем вам нужно использовать jquery? просто переключите классы на основе переменной '$ _SESSION' с php – billyonecan

ответ

0

Изменить это:

echo "<script type='text/javascript'> $('.btna').addClass('.btnh'); 
     $('.btna').removeClass('.btna');</script>"; 

Для

echo "<script type='text/javascript'> $('.btna').addClass('btnh'); 
     $('.btna').removeClass('btna');</script>"; 

Вам не нужно, чтобы добавить точку перед именем класса

+0

won ' t, поскольку это вне документа. – Jai

+0

это должно работать на самой загрузке страницы –

-1

Maybe, DOM не готов, когда вам «Запустите свой скрипт. Подождите, пока готовое событие, прежде чем запустить его:

$(function() { 
    //your code here 
}) 
0
<script type='text/javascript'> 
$('.btna').addClass('btnh'); 
$('.btna').removeClass('btna'); 
</script> 

Это должно работать. Если нет, то использовать это, чтобы быть уверенным, что DOM готова:

<script type='text/javascript'> 
    $(document).ready(function() 
    { 
     $('.btna').addClass('btnh'); 
     $('.btna').removeClass('btna'); 
    } 
</script> 
5

В заявлении JQuery, не используйте точку для класса (.).

before : $('.btna').addClass('.btnh'); 
after : $('.btna').addClass('btnh'); 

Удачи.

+0

Итак, если вам не нужна точка для классов, почему у вас есть точка в ('.btna')? – PlanetAlexander

+0

@PlanetAlexander dot используется только в CSS-индикаторе. Первый («.btna») используется для индикатора CSS. –

0

попробовать

<script> 
$(document).ready(function(){ 
var sessvalue='<?php echo $_SESSION['mysession']; ?>'; 
if(sessvalue == true) { 
     $('.btna').addClass('btnh'); 
     $('.btna').removeClass('btna'); 
} 

}); 
</script> 
0

Попробуйте это ..: D

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 
<title>Untitled Document</title> 
 
</head> 
 

 
<body> 
 
    <button type="submit" id="myChangeBtn" name="submit" class="btnh" placeholder="Logout"> 
 
     Logout 
 
    </button> 
 
</body> 
 
</html> 
 
<?php 
 
if (isset($_SESSION['mysession']) && $_SESSION['mysession'] == true) { 
 
\t echo "<script type='text/javascript'> 
 
\t \t if($('#myChangeBtn').hasClass('btna')){ $('#myChangeBtn').removeClass('btna');} 
 
\t \t if(!$('#myChangeBtn').hasClass('btnh')){ $('#myChangeBtn').addClass('btnh');} 
 
\t \t </script>"; 
 
} 
 
?>

0

Вам не нужно использовать JavaScript для этого вообще. Просто добавьте условие для установки класса с помощью PHP.

<?php 

$btnClass = (isset($_SESSION['mysession']) && $_SESSION['mysession'] == true) 
      ? 'btnh' // value if above condition evaluates true 
      : 'btna'; // value if above condition evaluates false 

?> 

<button type="submit" name="submit" class="<?php echo $btnClass; ?>"> 

 Смежные вопросы

  • Нет связанных вопросов^_^