【问题标题】:When POST'ing Dropdowns values, only first value gets posted, second is null (using JSCRIPT, PHP)发布下拉列表值时,仅发布第一个值,第二个为空(使用 JAVASCRIPT,PHP)
【发布时间】:2012-04-05 08:46:26
【问题描述】:

编辑:我的主代码不再工作,这个功能应该工作吗?

<script type="text/javascript" src="jquery-1.7.2.js"></script>

<script>
var second_choice = $('#second-choice').val();
$("#first-choice").change(function() {
$("$second-choice").load("findModel.php?choice=" + $("#first-choice").val());
});
</script>

这是相关的 PHP 文件:

<?php
include 'dbc.php';
$choice = mysql_real_escape_string($_GET['choice']);

$query="SELECT * FROM `cars` WHERE `DVLAMake`='$choice'";
$result = mysql_query($query);

while ($row = mysql_fetch_array($result)) {
    echo "<option>" . $row{'DVLAModel'} . "</option>";
}
?>

数据库连接正常。

#

在加载 PHP 文件时会填充我的第一个下拉列表:

<form name="indexSearch" action="searchResults.php" method="POST">

<select id="first-choice">
<option selected value="base">Please Select</option>
<option value="VAUXHALL">VAUXHALL</option>
<?php 
$sql="SELECT DISTINCT `DVLAMake` FROM `cars`";
$result = mysql_query($sql);
while ($data=mysql_fetch_assoc($result))
{
echo "<option value =\"{$data[DVLAMake]}\" >{$data[DVLAMake]}</option>\n";
} 
?>
</select>

<select id="second-choice">
<option>Please choose from above</option>
</select>
<br />

<input type="submit" style="font-size:14px; padding:3;"value="Submit" size="20" />
</form>

这行得通,然后在选择值时调用一个函数,然后用我可以选择的选项填充第二个函数。但是,当我发布表单时,它不会采用第二个下拉选择值,因为它只是空的,但它确实采用了第一个下拉值选择值。

有什么原因吗?

【问题讨论】:

  • 您的选择输入没有name 属性
  • 您没有带有name 属性的表单控件,它应该无法提交任何数据。

标签: php javascript ajax post drop-down-menu


【解决方案1】:

问题是第二个选择标签没有名称属性。如果它位于表单中,则仅当属性具有名称时,您才会通过 post 获取请求。如果您使用的是 jquery,您可以简单地通过 id 获取值,然后通过 ajax 发布它。在 jquery 中这样选择。

var second_choice = $('#second-choice').val();

【讨论】:

  • 实际上 -
  • 原来我的代码不再工作了。忘记原来的问题;我的第一个下拉列表填充,但是当我更改第二个时没有任何反应。我的 jquery 函数就在 head 函数附近,对吗:
【解决方案2】:

您如何更改所选值?使用例如阿贾克斯?你是如何发送数据的?使用 ajax 或简单的 POST 并重新加载页面?

如果您使用 ajax 更改某些内容,则您的数据需要通过 ajax 发送。因为没有它,您将不会发送由 JS 生成的数据,而是由您的 PHP 脚本生成的数据。

【讨论】:

    【解决方案3】:

    你写的

    $("$second-choice").load("findModel.php?choice=" + $("#first-choice").val());
    

    代替:

    $("#second-choice").load("findModel.php?choice=" + $("#first-choice").val());
    

    $ -> #

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 2013-03-21
      • 2013-12-06
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多