使用ajax将值从一个PHP页面传递到另一个页面

时间:2021-01-08 00:42:06

标签: php jquery ajax

我已经绑定了几个小时来获取每个按钮的值 value="oneyearanalysis" 和 value="oneyearanalysis",当我按下它们时,我尝试使用 ajax。我想我很接近但我没有输出 GetData 但我在我的 console.log(clikYear); 中做了。希望你能帮我

最好的问候

Index.php

  <div class="container" style="margin-top: 50px;">
      <select  name="button" id="button">
        <option value="">Select...</option>
        <option value="oneyearanalysis">1 year analyse</option>
      <option value="fiveyearanalysis">5 year analyse</option>
  </select>
    </div>


$(document).ready(function(){ 
      $("#button").on("change",function() {
            var clikYear = $(this).val();
                  console.log(clikYear);
                  if (clikYear !== "") {
                    var getTableCall2 = $.ajax({
                      url : "GetData.php",
                      type:"POST",
                      cache:false,
                      data:{clikYear:clikYear},              
                    })
                  }
            });
            getTableCall2.done(function(data){
              console.log(data);
              console.log(getTableCall2);
              console.log(clikYear);
          })

GetData.php

if(isset($_POST['clikYear']))
{
    $year= $_POST['clikYear'];
}
$yearOfChoice = $year;

2 个答案:

答案 0 :(得分:1)

您选择的 ID 是“按钮”,但您使用的是类选择器。尝试更换 . # 在按钮前面

HTML

<select id="button">
    <option value="">Select...</option>
    <option value="oneyearanalysis">1 year analyse</option>
    <option value="fiveyearanalysis">5 year analyse</option>
</select>

JQuery

$("#button").on("change", function () {
    var clikYear = $(this).val();
    console.log(clikYear);
    if (clikYear !== "") {
        $.ajax({
            url: "GetData.php",
            type: "POST",
            cache: false,
            data: { clikYear: clikYear },
        })
    }
});

答案 1 :(得分:1)

你已经很接近让它发挥作用了。如果您应用下面的简单建议,您将来应该可以避免这种麻烦。

  1. 第一条建议是正确缩进您的代码。
    您会注意到 DO 变量是在 getTableCall2 select 上声明的。但是在尝试应用 change 承诺处理程序时在此之前“使用过”。

    下面,除了缩进之外,我没有对您的代码进行任何更改。
    文档就绪时的执行顺序是:
  • 注册 .done() 处理程序(未执行)
  • 抛出错误。

change
  1. 第二条建议是在您可能会看到此错误的地方使用 console
<块引用>

ReferenceError: getTableCall2 未定义。

  1. 第三条建议是在 $(document).ready(function(){ $("#button").on("change",function() { var clikYear = $(this).val(); console.log(clikYear); if (clikYear !== "") { var getTableCall2 = $.ajax({ url : "GetData.php", type:"POST", cache:false, data:{clikYear:clikYear}, }) } }); getTableCall2.done(function(data){ console.log(data); console.log(getTableCall2); console.log(clikYear); }) class 命名上更具创意。
    id 用于 {{1} } 只会导致混乱。您可以使用您想要的名称。让它有意义!我敢肯定,您在现实生活中谈论 .button 时不会使用 <select> 一词...

所以这里有一些应该起作用的东西:

door

为了测试它,确保 window 在两种情况下都输出一些东西:

$(document).ready(function(){
  $("#analysis_term").on("change",function() {
    var clikYear = $(this).val();
    console.log(clikYear);

    if (clikYear !== "") {
      var getTableCall2 = $.ajax({
        url : "GetData.php",
        type:"POST",
        cache:false,
        data:{clikYear:clikYear},
      })
      
      getTableCall2.done(function(data){
        console.log(data);
      })
    }
  });
});