2013-03-30 36 views
0

我需要根据用户在一个或多个选择字段中选择的内容,使用jquery加载PHP文件的内容。加载PHP文件并根据选择设置变量

我可以使用...

$("#first-choice").change(function() { 
    $("#second-choice").load("getter.php?choice=" + $("#first-choice").val()); 
}); 

...创建变量“选择”当“第一选择”字段由用户设定。但是,如果我想使用两个基于两个下拉选择器的变量,要设置变量'choice'(基于#第一选择的选择)和choice2(基于#second-choice的选择)选择)。

所以我要加载的PHP文件类似getter.php?选择=首选&选择2 =第二选择

+3

那么你的问题是什么? –

+0

如果用户选择(按顺序),“首选”,然后“第二选择”,另一个用户首先选择“第二选择”,然后选择“首选”,那么您将如何决定何时加载页面?你需要一些其他的用户交互来加载页面。 – SachinGutte

+0

好的,所以这就是我想要做的... 我正在使用一个有多个XML提要的API。第一种饲料给予国家,第二种饲料给予城市,第三种饲料给予城市内的一个位置。 国家饲料将构成第一个下拉选择器。这很简单。但是,当用户选择国家时,我需要为该国的所有城市加载第二个选择器,因此我需要调用API来获取所有城市,然后在选择该城市时,我需要调用另一个返回XML该城市的位置并显示在第三个选择器中。 – user2227359

回答

0

这里我将如何处理这种情况..

不将您的选择视为ID。对所有选择选项使用单个类,然后使用基于类的选择器将.change()绑定到所有选择。如果你这样做,你可以遍历X个选择,使用它们的ID作为查询参数变量,并将它们的值作为每个查询值。我在jsfiddle上为你创建了一个快速演示。我也贴的代码下面为您....

Here is my demo on jsfiddle

<div> 
    <select class="php-options" id='first-choice' name='first-choice'> 
     <option value='1-0'>choose</option> 
     <option value='1-1'>1-1</option> 
     <option value='1-2'>1-2</option> 
     <option value='1-3'>1-3</option> 
     <option value='1-4'>1-4</option> 
     <option value='1-5'>1-5</option> 
    </select> 
</div> 
<div> 
    <select class="php-options" id='second-choice' name='second-choice'> 
     <option value='2-0'>choose</option> 
     <option value='2-1'>2-1</option> 
     <option value='2-2'>2-2</option> 
     <option value='2-3'>2-3</option> 
     <option value='2-4'>2-4</option> 
     <option value='2-5'>2-5</option> 
    </select> 
</div> 
<div id="request-url"></div> 





$(document).ready(function(){ 
//treat your select options with classes, 
//bind change event on each select 
$('.php-options').change(function(e){ 
    var urlValues = [], 
     parameterArgs = ""; 
    //loop selects to build parameters 
    $('.php-options').each(function(i,v){ 
     var optValue = $(this).val(), 
      optId=$(this).attr('id'), 
      parameter = ""+optId+"="+optValue; 
     urlValues.push(parameter); 
    }); 
    //build parameter string 
    parameterArgs =urlValues.join("&"); 

    //output query 
    $('#request-url').text('getter.php?'+parameterArgs);   
}); 

});