Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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
用jQuery和PHP填充select_Php_Jquery_Mysql_Ajax_Drop Down Menu - Fatal编程技术网

用jQuery和PHP填充select

用jQuery和PHP填充select,php,jquery,mysql,ajax,drop-down-menu,Php,Jquery,Mysql,Ajax,Drop Down Menu,我有一个表,其中包括一个物种的分类名称。因此,每个物种、域、王国、门等都有单独的列。我正在为这些分类中的每一个使用一个选择框,我需要做的是,当选择第一个域时,查询数据库以获得所有的kingdomes,其中domain是前一个选择的值 下面是我在“search.PHP”中为PHP提供的内容: <select name="domain" id="domain"> <option value="standard">-- Domain --</option> <

我有一个表,其中包括一个物种的分类名称。因此,每个物种、域、王国、门等都有单独的列。我正在为这些分类中的每一个使用一个选择框,我需要做的是,当选择第一个域时,查询数据库以获得所有的kingdomes,其中domain是前一个选择的值

下面是我在“search.PHP”中为PHP提供的内容:

<select name="domain" id="domain">
<option value="standard">-- Domain --</option>
<?php while($row = mysql_fetch_array($get_domains, MYSQL_NUM))
{
  echo "<option value='$row[0]'>$row[0]</option>";
} ?>
</select>

<select name="kingdom" id="kingdom" >
<option value="standard">-- Kingdom --</option>
<?php 
        $result = array();
    $domain = $_POST['domain'];
    $get_kingdoms = mysql_query("SELECT DISTINCT sci_kingdom FROM tbl_lifedata WHERE sci_domain = $domain");
    while($row = mysql_fetch_array($get_kingdoms, MYSQL_NUM))
    {
         $result[] = array(
             'name' => $row[0]
         );
    }
    echo json_encode($result);
?>
</select>
这就是我的jquery中的内容:

$('#domain').change(function() {
    $domain = $('#domain option:selected').val();

    if ($domain == 'standard') {
        $('#kingdom').attr('disabled', 'disabled');
        $('.btn-cover').text('Select a Domain:');
    } else {
        $('#kingdom').removeAttr('disabled', 'disabled');
        $('.btn-cover').text('Select a Kingdom:');
    }
});

$('#kingdom').change(function() {
    $kingdom = $('#kingdom option:selected').val();

    if ($kingdom == 'standard') {
        $('#domain').removeAttr('disabled', 'disabled');
        $('#phylum').attr('disabled', 'disabled');
        $('.btn-cover').text('Select a Kingdom:');

    } else {
        $('#domain').attr('disabled', 'disabled');
        $('#phylum').removeAttr('disabled', 'disabled');
        $('.btn-cover').text('Select a Phylum:');
        $.post("search.php", {
            'domain': option
        }, function(data) {
            var sel = $("#kingdom");
            sel.empty();
            for (var i = 0; i < data.length; i++) {
                sel.append('<option>' + data[i].name + '</option>');
            }
        }, "json");
    }
});​
我在理解.post函数如何工作方面遇到了最大的困难。我知道我想做什么,只是不知道怎么做

我的目标是: -更改域选择框时获取其值 -在mysql查询中使用该值来获取相关数据 -使用jquery执行查询,然后填充王国选择框


谢谢

你找到错误发生的地方了吗?虽然我看到了一个模糊的问题,但我没有看到具体的问题。服务器是否未接收数据?它发回时没有注册吗?调试在这里是必须的。另外,您使用的jQuery版本是什么?我建议使用.prop而不是.attr和removeAttr。顺便说一下,一般理解,$.postrl.ext,{key:value,key:value},functiondata{//data contains server response},'dataType';默认情况下,数据类型将检测从服务器返回的数据。如果您没有在后端正确地构造和发送JSON对象,那么如果您显式地将JSON定义为数据类型,那么它将不起作用。问题是我不确定错误发生在哪里,也不确定如何调试此错误。我很抱歉说得含糊不清。对于$.post,“键”和“值”对应什么?键是在后端接收对象时访问对象的方式。如果“key”是“george”,而值是“is cool”,那么如果您使用$\u POST['george'],则值将是“is cool”。这有意义吗?另外,出于调试目的,我更喜欢Firefox和Firebug插件。安装Firebug后,只需点击F12即可打开工具窗口。调用$\u POST操作,然后检查“NET”面板。单击请求旁边的“+”符号。然后您将看到几个较小的框。您可以查看发送的数据,看看它是否发送了正确的数据,也可以查看响应,看看发送回您的是什么。如果其中任何一个是空的,或者报告一个PHP错误,它将给您前进的阻力。