【问题标题】:php ajax two select boxphp ajax 两个选择框
【发布时间】:2011-12-06 02:31:37
【问题描述】:

我对这个 jquery ajax 很陌生。我想知道的是如何根据第一个选择框的选择填充第二个选择框的内容。说这里是我的 HTML:

<form method="post" action="tosomewhere.php">
<table>
<tbody>
<tr>
  <td>
    <select id="first" name="year">
      <option value="1">1</option>
      <option value="2">2</option>
    </select>
  </td>
</tr>
<tr>
  <td>
    <select id="second" name="section">
    </select>
  </td>
</tr>
</tbody>
</table>
</form>

脚本:

<script type="text/javascript">
$(function () {
$("#first").change(function () {
$("#second").load('second_option.php?year=', {first: $(this).val()});
});
});
</script>

PHP 文件:

<?php

require '../../config/dbconfig.php';
$year = $_GET['year'];
$sql = "SELECT * FROM section_tb WHERE year = ?";
$stmt = $db->prepare($sql);
$stmt->execute(array($year));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$second_option = "";
foreach($result as $key => $value)
    $second_option .= "<option value='".$value['section_name']."'>".$value['section_name']."</option>";
echo $second_option;
?>

我的第二个选择框的内容将从第一个选择框的 WHERE 值的 mysql 结果中填充。我可以构建 PHP 文件,我只是对如何在选择中返回和填充它感到困惑。

任何教程或示例的线索?非常感谢。

编辑:添加了 jquery 脚本,但仍然没有运气。我试图 var_dump($second_option) 它有内容。

【问题讨论】:

    标签: php jquery ajax select


    【解决方案1】:

    将此 javascript 添加到您的当前页面:

    <script>
    $(function () {
    
      $("#first").change(function () {
        $("#second").load('second_options.php?year=' + $(this).val());
      });
    
    });
    </script>
    

    并在“second_options.php”中返回此内容:

      <option value="1">a</option>
      <option value="2">b</option>
    

    【讨论】:

    • 谢谢。我试过这个,做了一些调整,$("#second").load('second_options.php?year=', {first: $(this).val()});,然后在我的 PHP 上,我得到了年份值。我将我的查询结果 foreach 到
    • 如果您直接在浏览器中访问您的“second_options.php?year=1”页面,您是否看到源中返回的选项?如果您遇到任何类型的错误,.load() 函数将静默终止,这可能就是您在此处看到的。
    • 它不返回echo $second_option;。但是当我添加这个&lt;html&gt;&lt;body&gt;&lt;select&gt;&lt;?php echo $second_option; ?&gt;&lt;/select&gt;&lt;/body&gt;&lt;/html&gt; 时,它会显示一个选项,其中包含我从数据库中获取的内容。
    • 我尝试替换 $second_option = "HELLO"; 的内容,当我更改第一个下拉菜单时它确实返回了“HELLO”。为什么$second_option = "&lt;option&gt;&lt;/option&gt;";的内容是这样的,什么都打印不出来。
    • 我认为您将 year 参数传回的方式不正确-我已将示例更改为与您的操作方式更相似,但实际上应该可以使用.至于响应的内容 - 它应该只是 (等等...),根本没有包装 HTML。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-18
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2016-11-16
      相关资源
      最近更新 更多