如何使用jquery / ajax中的下拉列表中的值创建URL?

时间:2016-10-11 16:11:22

标签: php jquery ajax

我想为ajax调用创建一个网址,如下所示:

myurl.php?ym=201609

ym值应该来自下拉列表更改。然后该值需要通过以上url。

这是我尝试的方式:

$(document).ready(function () {
  $("#salStatePeriod").change(function() {
    window.period = $(this).val(); 

    alert(window.period);
  }); 

  var table = $(".salary_statement").dataTable({
     "ajax": {
         "url":'./process_datatable.php?ym='+window.period,
         "type":"POST",
         "extend":function( response ) {
             // $(this).json = response; 
             $("#total").html(this.data.total);
          }
      }

  });  
});

但它对我不起作用。它的输出如下: /process_datatable.php?ym=undefined

任何人都可以告诉我,我是怎么想出来的?

2 个答案:

答案 0 :(得分:2)

尝试直接在数据表ajax调用中获取值。

$("#salStatePeriod").change(function() {
        $(".salary_statement").dataTable({
            "ajax": {
                "url":'./process_datatable.php?ym='+this.val(),
                "type":"POST",
                "extend":function( response ) {
                    // $(this).json = response; 
                    $("#total").html(this.data.total);
                }
            }
        });
    });

答案 1 :(得分:0)

您需要将实际的ajax请求放在可以在下拉控件的change事件上调用的函数中:

$(document).ready(function () {
  function sendNotification(index) {
     $(".salary_statement").dataTable({
         "ajax": {
         "url":'./process_datatable.php?ym=' + index,
         "type":"POST",
         "extend":function( response ) {
            // $(this).json = response; 
            $("#total").html(this.data.total);
         }
       }
    });
  }

  $("#salStatePeriod").change(function() {
    sendNotification($(this).val());
  });  
});

在分配window.period值后,您还可以将ajax代码放在change方法中:

$(document).ready(function () {
  $("#salStatePeriod").change(function() {
    $(".salary_statement").dataTable({
       "ajax": {
         "url":'./process_datatable.php?ym=' + $(this).val(),
         "type":"POST",
         "extend":function( response ) {
            // $(this).json = response; 
            $("#total").html(this.data.total);
         }
       }
    });
  });  
});