如何使用ajax将javascript中的变量传递给php

时间:2018-09-21 07:36:00

标签: javascript php html ajax

我正在尝试使用ajax从html的选择列表中传递选定的月份。但是每次我选择一个月时,它都不会出现。在我选择一个月之前,由于if else是有条件的,因此“什么都没有”,然后当我选择一个月时,“什么都没有”这个词消失了,但没有获取任何变量。 这是我的JavaScript代码:

$('#button-search-ohr').on('click', function() {
    var month = $('#monthChoose').val();

    if(month == 0) {
        alert('Month must be choosen!');
    }

    $.ajax({
        async   : true,
        type    : 'POST',
        url     : '<?php echo base_url();?>sms/lapkinerjastat', 
        data    : {month:month},
        success : function(data) {
            $('#month').html(data);
        }
    });
}

这是html和php

<h5 class="pilih-bulan">Month Choose
     <select id="monthChoose" name="month">
          <option value="0">Pilih bulan</option>
          <option value="Januari">Januari</option>
          <option value="Februari">Februari</option>
          <option value="Maret">Maret</option>
          <option value="April">April</option>
          <option value="Mei">Mei</option>
          <option value="Juni">Juni</option>
          <option value="Juli">Juli</option>
          <option value="Agustus">Agustus</option>
          <option value="September">September</option>
          <option value="Oktober">Oktober</option>
          <option value="November">November</option>
          <option value="Desember">Desember</option>
     </select>
     <button id="button-search-ohr" type="submit">Search</button>
</h5>    

<div id="month">
     <?php 
     if(isset($_POST['month'])) {
          $month = $_POST['month'];
          echo 'This is '.$month;
     }else {
          $month = null;
          echo 'Nothing';
     }?>
</div>

我该如何正确地在JavaScript中传递变量以将该变量存储在php中?

编辑: 我意识到自己写错了url,而我刚刚用JavaScript编辑了url。它成功传递了变量,但页面变成了两倍。在这里,我得到了屏幕截图。 选择月份之前(请注意“无”)

before

选择月份后(请注意“这是Februari”)

after

1 个答案:

答案 0 :(得分:0)

编辑后的答案

当您单击按钮时,您将提交表单,以便您在同一页面上被重定向。

尝试一下:

$('#button-search-ohr').on('click', function(e) { // Add the "e" in your function
    // You stop the submit
    e.preventDefault();
    e.stopPropagation();

    var month = $('#monthChoose').val();

    if(month == 0) {
        $('#month').html('Nothing');
         alert('Month must be choosen!');
    } else {
        $('#month').html('This is ' + month);
    }
}

然后替换:

<div id="month">
     <?php 
     if(isset($_POST['month'])) {
          $month = $_POST['month'];
          echo 'This is '.$month;
     }else {
          $month = null;
          echo 'Nothing';
     }?>
</div>

通过:

<div id="month">
    Nothing
</div>

您无需在同一页面上进行Ajax调用即可更改div的内容。只需从“无”切换到“这是+所选月份”即可。

以下是向您展示的代码段:只需单击您的按钮,内容就会发生变化:

$('#button-search-ohr').on('click', function(e) { // Add the "e" in your function
    // You stop the submit
    e.preventDefault();
    e.stopPropagation();

    var month = $('#monthChoose').val();

    if(month == 0) {
        $('#month').html('Nothing');
         alert('Month must be choosen!');
    } else {
        $('#month').html('This is ' + month);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h5 class="pilih-bulan">Month Choose
     <select id="monthChoose" name="month">
          <option value="0">Pilih bulan</option>
          <option value="Januari">Januari</option>
          <option value="Februari">Februari</option>
          <option value="Maret">Maret</option>
          <option value="April">April</option>
          <option value="Mei">Mei</option>
          <option value="Juni">Juni</option>
          <option value="Juli">Juli</option>
          <option value="Agustus">Agustus</option>
          <option value="September">September</option>
          <option value="Oktober">Oktober</option>
          <option value="November">November</option>
          <option value="Desember">Desember</option>
     </select>
     <button id="button-search-ohr" type="submit">Search</button>
</h5>

<div id='month'>
  Nothing
</div>