Javascript 基于先前选择的Jquery下拉选项
是否可以根据前面的下拉选择从数据库中获取数据 例如:Javascript 基于先前选择的Jquery下拉选项,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,是否可以根据前面的下拉选择从数据库中获取数据 例如: <select id="paramscountries" class="chzn-done" style="display: none;" name="params[countries][]" multiple="true" size="10"> <option value="1">Afghanistan</option> <option value="2">Albania<
<select id="paramscountries" class="chzn-done" style="display: none;" name="params[countries][]" multiple="true" size="10">
<option value="1">Afghanistan</option>
<option value="2">Albania</option>
<option value="3">Algeria</option>
<option value="4">USA</option>
</select>
如果我从上面的列表中选择USA,它将进行查询并从数据库中获取所有州的名称。例如,from states.php&将在另一个下拉选择中显示所有州的名称,而无需重新加载该页面。尝试使用jquery ajax请求。像这样的 jQuery 在HTML中
您需要为此使用Javascript或jQuery,并使用它发布到将返回结果的页面
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="paramscountries" class="chzn-done" style="display: block;" onchange="getNewList($(this).val());" name="params[countries][]" multiple="true" size="10">
<option value="1">Afghanistan</option>
<option value="2">Albania</option>
<option value="3">Algeria</option>
<option value="4">USA</option>
</select>
<select name="states" id="states">
</select>
<script type="text/javascript">
function getNewList(country) {
$.post('post.api.php', {'api': 'getStates', 'countries': country}, function(response) {
var obj = $.pareseJSON(response);
$('#states').html(obj.states);
});
}
post.api.php页面
<?php
if(isset($_POST['api'])){
if($_POST['api'] == 'getStates'){
// sdet the countries array to a variable
$countries = $_POST['countries'];
// set a variable to hold the results
$results = array();
// query your db
$stm = $db->prepare('SELECT * FROM `your_database` WHERE `country` IN("'.implode('","', $countries).'")');
$stm->execute();
if($stm->rowCount() > 0){
foreach($stm->fetchAll(PDO::FETCH_ASSOC) as $row){
$results['states'] .= '<option value="'.$row['stateName'].'">'.$row['stateName'].'</option>';
}
}
echo json_encode($results);
}
}
我会做那样的事。希望这里有足够的内容让您开始工作。是否可以根据前面的下拉选择从数据库中获取数据?Answer=是的,谢谢,但是我怎么能做这样的列表呢?这里要描述的方法太多了,我建议您学习AJAX,它可以在不重新加载页面的情况下与后端php/MySQL进行通信,然后使用jQuery/Javascript处理返回值并生成/填充第二阶段下拉列表[{virtuemart_state_id:65,virtuemart_vendor_id:1,virtuemart_country_id:222,virtuemart_worldzone_id:0,state_name:England},{virtuemart_state_id:66,virtuemart_vendor_id:1,virtuemart_country_id:222;,virtuemart_worldzone_id:0,state_name:Northern Ireland}]但是我想检索virtuemart_state_id和state_name来创建第二个下拉列表。看看如何迭代JSON并随意使用它,然后看看并学习如何在jQueryTanks中添加元素。但是如果格式如下,我如何检索virtuemart_state_id和state_name:{222:[{virtuemart_state_id:65,virtuemart_vendor_id:1,virtuemart_country_id:222,virtuemart_worldzone_id:0,state_name:England},{virtuemart_state_id:66,virtuemart_vendor_id:1,virtuemart_country_country_id:222;,virtuemart_worldzone_id:0,state_name:Northern Ireland}}非常感谢。但我已经收到了php文件并发送了类似的JSON:{222;[{virtuemart_state_id:65,virtuemart_vendor_id:1,virtuemart_country_id:222,virtuemart_worldzone_id:0,state_name:England},{virtuemart_state_id:66,virtuemart_vendor_id:1,virtuemart_country_id:222;,virtuemart_worldzone_id:0,state_name:Northern Ireland}]&我想使用virtuemart_state_id和state_name进行下拉。您可以使用jQuery将json转换为对象。使用var obj=$.parseJSONresponse;如上面的示例所示。然后您可以迭代对象并访问所需的两个字段$.eachobj,functioni,v{console.logv.virtuemart_state_id;};
<select id="secondDropDownList"></select>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="paramscountries" class="chzn-done" style="display: block;" onchange="getNewList($(this).val());" name="params[countries][]" multiple="true" size="10">
<option value="1">Afghanistan</option>
<option value="2">Albania</option>
<option value="3">Algeria</option>
<option value="4">USA</option>
</select>
<select name="states" id="states">
</select>
<script type="text/javascript">
function getNewList(country) {
$.post('post.api.php', {'api': 'getStates', 'countries': country}, function(response) {
var obj = $.pareseJSON(response);
$('#states').html(obj.states);
});
}
<?php
if(isset($_POST['api'])){
if($_POST['api'] == 'getStates'){
// sdet the countries array to a variable
$countries = $_POST['countries'];
// set a variable to hold the results
$results = array();
// query your db
$stm = $db->prepare('SELECT * FROM `your_database` WHERE `country` IN("'.implode('","', $countries).'")');
$stm->execute();
if($stm->rowCount() > 0){
foreach($stm->fetchAll(PDO::FETCH_ASSOC) as $row){
$results['states'] .= '<option value="'.$row['stateName'].'">'.$row['stateName'].'</option>';
}
}
echo json_encode($results);
}
}