Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于先前选择的Jquery下拉选项_Javascript_Php_Jquery_Html_Mysql - Fatal编程技术网

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);
    }

}