【问题标题】:fill second drop down based on firsts drop down value根据第一个下拉值填充第二个下拉列表
【发布时间】:2013-11-11 22:41:34
【问题描述】:

test.html 中的表格是在按钮单击添加事件时动态创建的。 var i 在脚本中更靠前。

html 运行并允许我从服务选择中选择一个值(第一个下拉菜单中的选择应该只返回一个 0、1、2)。选择的值通过帖子传递到 support/descriptions.php,进行 mysql 查询,我希望将结果数组返回给名为 description 的选择。我目前没有得到关于数组警报的值或返回第二个选择的值,但我也没有得到任何错误。您是否在 php 文件中看到任何阻止数组被填充的内容?第二个下拉列表的 div 也没有被填充的原因是什么?

第二个警报返回一条消息,内容如下:

<option value="Array">Array</option>
<option value="Array">Array</option>
<option value="Array">Array</option>
<option value="Array">Array</option>
<option value="Array">Array</option>

test.html

$(document).on('change', '.service', function () {  
        var element = $(this);
        var I = element.attr("id");
       $.post("support/descriptions.php", {
            id: $(this).val()           
        },
        function (data) {
    var response = (data).split(";", 2);
            alert(response[0]);
            alert(response[1]);
    $("#descript" + I).html(response[1]);
        });
        return false;
    });


<table>
        <th>Catagory</th>
        <th>Select Item</th>
    <tr>
        <td>
            <select class ="service" name="service' + i + '" id="' + i + '">
                <option value="0">Select One</option>
                <option value="1">Hardscape</option>
                <option value="2">Plants</option>
            </select>
        </td>
        <td>
            <select name="description' + i + '" id="' + i + '"><div id="descript' + i + '"></div></select>
        </td>
    </tr>
</table>

descriptions.php

<?php
include('db_connection.php');

$id = $_POST['id'];
    if ($id == 1){
    $result = mysql_query("SELECT Distinct description FROM hardscape");
    }
    if($id == 2){
    $result = mysql_query("SELECT Distinct description FROM plants");
    }

$options = '<option value="Select One">Select One</option>';
while($row = mysql_fetch_array($result)) { 
        $options .= '<option value="'. $row['description'] .'">'. $row['description'] .'</option>';
    }
echo $id .";".$options.";";
    ?>

更新 -

我的数组没有被填充的问题是因为我使用了“;”作为解析。我发现我的数据有“;”在他们里面所以为了测试我改变了

echo $id .";".$options.";";

echo $id ."~".$options."~";

我也将我的 div 从内部更改为外部

<select name="description' + i + '" id="' + i + '"><div id="descript' + i + '"></div></select>

<div id="descript' + i + '"><select name="description' + i + '" id="' + i + '"></select></div>

最后但同样重要的是,我必须将我的 php 文件更改为以下内容以重建整个选择:

$options = '<select><option value="Select One">Select One</option>';
while($row = mysql_fetch_array($result)) { 
    $options .= '<option value="'. $row['description'] .'">'. $row['description'] .'</option>';
    }
    $options .='</select>';
echo $options;

【问题讨论】:

  • 只使用 JSON,为什么要构建自己的小解析器?
  • 说真的,使用 JSON。不,这并不简单! :)
  • 我首先尝试了一个 JSON 示例,并且可以让它返回任何内容。解析器仅用于测试....完成后不需要回显数组。

标签: javascript php mysql


【解决方案1】:

$row 是一个数组,要获取字段description,您必须从数组中获取它,$row['description']

$options .= '<option value="'. $row['description'] .'">'. $row['description'] .'</option>';

【讨论】:

  • 感谢您的回复。我原来有,但没有发布。
  • 我能够找出阵列无法正常工作的原因。这是 ; 的解析值在 echo $id .";".$options.";";
猜你喜欢
  • 2013-12-06
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多