Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2016, 22:06
Новичок на форуме
Отправить личное сообщение для Maybe_V Посмотреть профиль Найти все сообщения от Maybe_V
 
Регистрация: 11.05.2016
Сообщений: 4

Как правильно получить 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');
            }


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

Буду благодарный за подсказку))
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2016, 02:09
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Maybe_V, а так есть id?
if ($(this).text() == addText) {
    alert(this.id);
    // ...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Json и как его правильно кушать (Help plz!) JohnyVoo Angular.js 2 04.05.2016 19:55
Как получить значение цвета из color picker razorg1991 jQuery 1 06.10.2014 09:06
Как получить в JQUERY каждую строку как отдельный объект? Alex1233 Общие вопросы Javascript 3 22.08.2014 06:54
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Как правильно получить введенные данные в поле? buket jQuery 11 11.04.2010 19:59