通过Ajax将三个下拉选择值作为参数传递给控制器

时间:2012-10-29 17:03:44

标签: jquery

在jquery中,三个下拉列表值在按钮单击事件中通过ajax作为参数传递 但是我们存储的值下拉值不能用于改变函数吗?

 $("#rooms").change(function () {
        var searchRooms = $("#rooms").val();       
 });
像这样我在按钮点击事件中需要三个变量(下拉值) 我有三个下拉列表。我使用上面的代码从一个下拉列表中选择了一个值。现在我需要从三个不同的下拉列表中选择三个值。如果我使用上面的代码从一个下拉列表中选择一个值,那么该值将存储在searchRooms varaible.now中我需要使用(传递)变量到控制器。如果我关闭更改功能,则无法使用可变值。我对么?所以我需要将三个下拉列表值传递给按钮单击事件中的控制器

  

另一个问题,宣称为全局变量。

  $(#"btn").click(function(){
    var searchRooms;
    var searchAdults;
    var searchChildren;
     $("#rooms").change(function () {
        searchRooms = $("#rooms").val();
    });

    $("#adults").change(function () {
        searchAdults = $("#adults").val();
    });

    $("#searchChildren").change(function () {
        searchChildren = $("#children").val();
    });

   $.ajax({
   i need pass the above three variable values to controller here
  });
  });
  

在这个改变后的函数中,变量searchRooms的值是多少?
  在警报中我得到的值是未定义的意思是,searchRooms没有值?
  我怎样才能将该变量传递给控制器​​?

1 个答案:

答案 0 :(得分:0)

您可以将变量searchRooms定义为全局(或其他一些合适的封闭范围),超出.change函数范围,并且在您进行AJAX调用时可以使用它。或者,您可以在执行AJAX调用时获取所需的值,与在.change函数中执行此操作的方式完全相同。

事实上,就目前而言,你的.change函数没有任何用处。您正在抓取#rooms中的值并将其放入一个立即超出范围的局部变量中。所以目前还不清楚你到底想要做什么。

所以,你可以这样做:

var searchRooms;
$("#rooms").change(function () {
    searchRooms = $("#rooms").val();       
 });

或者,更好的是,你可以这样做:

$("#mybutton").click(function() {
    var searchRooms = $("#rooms").val();
    var myotherdropdown = $("#otherdropdown").val();
    // now do your AJAX call, passing in your variables you grabbed above.
    $.ajax(//.....
});

更新:这样的事情:

var searchRooms;
var searchAdults;
var searchChildren;

$("#rooms").change(function () {
    searchRooms = $("#rooms").val();
});

$("#adults").change(function () {
    searchAdults = $("#adults").val();
});

$("#searchChildren").change(function () {
    searchChildren = $("#children").val();
});

$(#"btn").click(function(){
   // How you pass the data here will depend on what you are calling and what format it's expecting. It *might* look something like this...
   $.ajax({
      data: { "searchRooms" : searchRooms, "searchAdults" : searchAdults, "searchChildren": searchChildren },
      // all your other settings for this ajax call...
   });
});