@prokopov-vi

Как правильно получить id кнопки?

Немного странно работает мой скрипт js:

<?php
use app\models\User;
use yii\helpers\Html;
use app\components\PeopleWidget;
use yii\helpers\Url;

/**
 * @var User $peopleArr
 * @var PeopleWidget $context
*/
?>

<?php foreach ($peopleArr as $people): ?>
    <?php echo Html::a($people->getAttribute('name'), Url::to(['/user/index', 'id' => $people->getAttribute('nick_name')]));?>
    <?php echo $people->getAttribute('nick_name');?>
    <?php echo Html::button('Сообщение', ['id' => $people->getId(), 'class' => 'mail-to'])?>
    <?php echo Html::button($context->isFriend($people->getId()) ? PeopleWidget::REMOVE_FROM_FRIEND : PeopleWidget::ADD_TO_FRIEND,
        ['id' =>  PeopleWidget::REMOVE_FROM_FRIEND ? $context->getFriendId($people->getId()) : $people->getId(), 'class' => 'action-to-user']);?>
<?php endforeach;?>


<?php
$removeText = PeopleWidget::REMOVE_FROM_FRIEND;
$addText = PeopleWidget::ADD_TO_FRIEND;

$checkFriend = <<< JS
    var removeText = "$removeText";
    var addText = "$addText";
    
    $('.action-to-user').click(function() {
        if ($(this).text() == removeText) {
            $.ajax('/user/delete-friend/', {
                type: 'post',
                data: 'id-friend=' + this.id + '&is-people=' + true,
                success: function (response) {
                 $(('#'+response)).text(addText);
                },
                error: function() {
                    alert('error');
                }
             });
        } 
       if ($(this).text() == addText) {
         $.ajax('/user/add-friend/', {
            type: 'post',
            data: 'id-friend=' + this.id,
            success: function(response) {
              alert(response);
            },
            error: function() {
              alert('error');
            }
           });
       }
    });
    
JS;
$this->registerJs($checkFriend, \yii\web\View::POS_READY);
?>


Когда выполняется первое условие - id кнопки передается правильно и корректно выполняется действие!

Но когда выполняется второе условие - не передается ничего! То есть в action контроллера передается пустая строка!

Пробовал разные варианты, например задавать кнопке просто один id, например 5 - результат не меняется!

Но когда сделать так :

if ($(this).text() == addText) {
         $.ajax('/user/add-friend/', {
            type: 'post',
            data: 'id-friend=' + 5,
            success: function(response) {
              alert(response);
            },
            error: function() {
              alert('error');
            }


Все работает корректно!
Что я упустил ? Или возможно где то ошибся ?


Буду благодарный за подсказку))
  • Вопрос задан
  • 368 просмотров
Пригласить эксперта
Ответы на вопрос 1
MiragePresent
@MiragePresent
программист php
Немножко странно работает ваш код вообще, вы из php пишите js.
Да, не по теме, но почему не в js-файле?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы