Как сделать так, чтобы JS отправлял данные в PHP при нажатии кнопки / раскрывающемся меню? - PullRequest
0 голосов
/ 11 апреля 2019

Я занимаюсь разработкой системы уведомлений для своего веб-приложения, и я новичок в JS / Ajax. Что мне нужно сделать, это отправить переменную в мой PHP, который выполняет код обновления на моем сервере, чтобы установить уведомления как прочитанные, в идеале, когда пользователь открывает раскрывающийся список уведомлений.

Я пытался использовать функции OnClick, однако кнопка, похоже, не активировала Ajax, поскольку данные не обновлялись. В настоящее время я также пытаюсь использовать 'data-role' в моем теге + $ (document) .on ('click', 'a [data-role = ...) в раскрывающемся теге, и все же Аякс, похоже, не активируется. Я оглянулся вокруг и, похоже, не нашел ничего, связанного с такой вещью. Я не знаю, если тег уже переключает выпадающий список, он также не может переключать ajax?
Отказ от ответственности: это мой первый вопрос здесь, так что извините, если я упрощаю / слишком усложняю вещи.

Код Ajax

$(document).ready(function(){
  $(document).on('click','a[data-role=update]',function(){
    var read  = 'Y';
    $.ajax({
      url      : 'Notification.php',
      method   : 'post',
      data     : {read : read},
      success  : function(response){
        // now update user record in table
        alert("Ajax sent the info!");
      }
    });
  });
});

Который должен быть активирован, когда пользователь нажимает на выпадающий переключатель

<a href="#" class="m-nav__link m-dropdown__toggle" data-role="update">
  <span class="m-nav__link-badge badge badge-square badge-danger">
      <?php  echo $count; ?>
      //This var is just a badge w/ a number of notifications
  </span>
  <span class="m-nav__link-icon">
     <i class="flaticon-music-2"></i>
  </span>
</a>

My Notification.php имеет следующий код.

include_once("../app_config.php");
  $read = $_POST['read'];
  if ($read='Y') {

  $conexaon = new Connection();
  $sqlu = "UPDATE tbl_prinotificacao SET pn_unread = 'N' ORDER BY pn_datetime desc";
  $resultu = $conexaon->consulta($sqlu);

  if($resultu){
    echo 'data updated';
  }
}

Я ожидаю, что ajax отправит var по почте для PHP, когда пользователь откроет раскрывающийся список и когда пользователь меняет страницы, уведомления должны быть удалены. Я тестировал только PHP, и он обновляет данные в таблице. Однако при открытии выпадающего меню ничего не происходит с ajax, оно открывается только в обычном режиме и не активирует ajax.

1 Ответ

0 голосов
/ 11 апреля 2019

Благодаря предложению @ NicoHaase по отладке сети я смог найти проблему.URL-адрес Аякса был неверным.Я исправил URL-адрес, и код сработал.

Мне пришлось изменить URL-адрес, чтобы получить правильный путь к Notification.php

$(document).ready(function(){
  $(document).on('click','a[data-role=update]',function(){
    var read  = 'Y';
    $.ajax({
      url      : '../../resource/include/Notification.php',
      method   : 'post',
      data     : {read : read},
      success  : function(response){
        // now update user record in table
        alert("Ajax sent the info!");
      }
    });
  });
});

Похоже, что проблема возникла даже после уведомления.php находился в той же папке, что и файл меню, в котором я использовал тег, он был импортирован в индексный файл в другой папке, поэтому мне пришлось адаптироваться к этому пути.Спасибо Нико Хассе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...