【问题标题】:How can I make a JS send data to PHP on Button Click/Dropdown opening?如何让 JS 在按钮单击/下拉打开时向 PHP 发送数据?
【发布时间】:2019-04-11 11:58:35
【问题描述】:

我正在我的 Web 应用程序上开发一个通知系统,而且我是 JS/Ajax 的新手。我需要做的是向我的 PHP 发送一个变量,该变量在我的服务器上运行更新代码以将通知设置为已读,理想情况下,当用户打开通知下拉菜单时。

我尝试使用 OnClick 功能,但是,由于没有更新数据,因此该按钮似乎没有激活 Ajax。目前,我还尝试在我的 a 标签上使用 'data-role' + $(document).on('click','a[data-role=...) 在下拉标签上使用ajax 似乎没有激活。我环顾四周,似乎没有发现任何与这种事情有关的东西。我不知道是否由于 a 标签已经在切换下拉列表,它是否也无法切换 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>

我的 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 通过 post 为 PHP 发送 var,通知应该消失。我单独测试了 PHP,它确实更新了表格上的数据。但是,当我打开下拉菜单时,没有任何与 ajax 相关的事情发生,它只会正常打开下拉菜单并且不会激活 ajax。

【问题讨论】:

  • 你收到警报了吗?
  • @Kidus,不,我没有收到警报。
  • @AnandhukrishnaVR,是的,我相信这是正确的。
  • 您尝试过什么调试问题?您是否通过浏览器的网络控制台检查了请求是否发送到后端?如果是,后端是否收到预期的数据?

标签: javascript php jquery html ajax


【解决方案1】:

感谢@NicoHaase 的网络调试建议,我能够找到问题所在。 ajax 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!");
      }
    });
  });
});

问题似乎发生了,因为即使 Notification.php 与我使用 a 标签的菜单文件位于同一文件夹中,但它被导入到另一个文件夹的索引文件中,所以我必须适应那条路。谢谢 Nico Hasse。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2019-09-01
    • 2018-12-29
    • 2015-03-09
    • 2016-08-19
    相关资源
    最近更新 更多