javascript 通过 AJAX 发送JS变量到PHP脚本点击按钮,其中href属性是动态设置的

nbysray5  于 2023-05-16  发布在  Java
关注(0)|答案(1)|浏览(58)

这是目前的情况:

  • 我在表格的每一行上都有一个复选框,代表一些信息
  • 一个最初被禁用的按钮,如果选中任何复选框,它将被启用
  • 这个按钮被一个<a></a>标签 Package /包围,如下所示<a><button type="button" id="myId" classes="classes..."></button></a>
  • 初始为空的数组

假设我有10行(10个复选框,每行一个)每次我选中一个复选框,我将表中表示的一些信息推入数组,并启用禁用的按钮**(即使有1个复选框,按钮也会启用)**
在这一点上,我想对enabled按钮的click事件做的是设置href属性和一个指向 Package 按钮的<a>标记上的PHP文件的链接,其次通过 AJAX 发送包含表中信息的数组。
我试着这样做,但似乎不起作用:

$('#my_initially_disabled_button').on('click',function(){
   if(some_generic_flag == true){
      let link = this.parentNode;
      link.setAttribute('href','scripts/php_script.php');
      
      $.ajax({  
        type: 'POST',  
        url: 'php_script.php', 
        data: { data: my_array }, // my_array is that array which gets update each time a checkbox is checked
        success: function() {
            //some stuff;
        }
    });
   }
});

我也试着在onclick事件之外编写 AJAX 部分,但仍然不起作用,结果我得到的是一个空白页面。
有趣的是,如果我删除 AJAX 部分,它会将我正确地重定向到PHP文件并正确地回显内容。
在PHP中,我尝试像这样接收 AJAX 请求

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     $var = $_POST['data'];
     
     // if I do var_dump($var) it does not work
}
0s7z1bwu

0s7z1bwu1#

  • 从按钮中删除链接-它是无效的和不必要的。
  • 单击按钮时抓取选中的信息
$(function() {
  const $button = $("#send");
  let array = [];
  $("#container").on("input", () => {
    array = $(".info:checked").map(function() {
      return this.value
    }).get();
    $button.prop("disabled", array.length === 0);
  });
  $button.on("click", () => {
    const data = JSON.stringify(array);
    console.log(data)
    // $.ajax(...., data:data, ....)
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
  <label>info1 <input type="checkbox" value="info 1 data" class="info" /></label><br/>
  <label>info2 <input type="checkbox" value="info 2 data" class="info" /></label><br/>
  <label>info3 <input type="checkbox" value="info 3 data" class="info" /></label><br/>
  <button id="send" disabled>Send</button>
</div>

相关问题