【问题标题】:How to populate dropdown list from ajax response?如何从 ajax 响应中填充下拉列表?
【发布时间】:2015-08-19 12:44:07
【问题描述】:

我有一个包含 2 个下拉列表 + 1 个隐藏字段的表单。

第一个下拉列表是城市。

第二个下拉列表是基于上面所选城市的地区值。

隐藏字段将根据使用 Jquery 的特定区域值显示或关闭。

我的问题是:

在城市下拉列表中,我有 onchange ajax 函数,它有助于在区域下拉列表中生成值。 However, When a particular district value is selected, the hidden field won't show up.

这是我的 html 表单:

<form>
<select id='main-cat' name='maincat' onchange="sortSubcat(this.value)"/>
<option value="">Please select one category</option>
<option value="City 1">City 1</option>
<option value="City 2">City 2</option>
<option value="City 3">City 3</option>
</select>
<select id='subcat' name='subcat'>
<option value=''>Please select a district</option>
</select>   
<div id='morefield' style='display:none'>
 <input type='text' name='option1'/>
</div>
</form>

这里是 onchange ajax 函数:

function sortSubcat(str)
{
if (str=="")
{
document.getElementById("subcat").innerHTML="";
return;
} 
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("subcat").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/member/sortsubcat.php?q="+str,true);
xmlhttp.send();
}

这是我的 Jquery 代码部分,用于在选择特定区域值时触发隐藏字段:

$("#subcat").change(function(){
if ($(this).val() == 'district a'){ 
    $("#morefield").css("display","block"); 
}else{
    $("#morefield").hide();
}
});

这是我的 php 文件:

<?php
 require_once("../configs/dbconnect.php");
 if (!empty($_GET['q'])){
 $q = basename($_GET['q']);
 $sql="SELECT * FROM subcat WHERE maincat=:q";
 $result = $conn->prepare($sql);
 $result->bindParam(':q', $q);
 $result->execute();
 echo "<option value=''>Please select a district</option>";

 foreach($result as $row)
 {
    echo "<option value='$row[name]'>$row[name]</option>";  
 }
 }
 else{
 echo "<option value=''>Please select a district</option>";
 }
 $conn=null;
 ?>

【问题讨论】:

  • 我们可以举一个sortsubcat.php文件返回的例子吗?
  • 您的代码按照您的描述工作。如果页面上也有 CSS,则可能需要查看它或检查该区域中 option 元素的 value 属性 select
  • @Deryck:这种编码是有效的。但是,在我选择了一个城市后,我看到下拉列表中出现了地区列表,我查看了页面源,那里没有显示选项列表?我想,这可能是选择特定城市值的问题,隐藏字段会按预期显示。但我不知道如何克服这个问题。
  • 当您“查看源代码”时,它会向您显示浏览器从服务器获得的初始代码。因此,任何动态创建或更改的元素都不会出现。您可以使用“检查元素”查看这些
  • @Deryck:您认为这可能是 Jquery 无法从区域下拉列表中获取所选值的问题吗?你有什么建议吗?

标签: jquery ajax json


【解决方案1】:

试试下面这行

console.log($(this).val());$("#subcat").change(function(){ 之后

现在找到您在更改从控制台中的 ajax 加载的下拉列表时获得的价值。

【讨论】:

  • 我在 Firefox (Ctrl + Shift +J) 中打开控制台登录并更改城市中的值。但我没有看到控制台日志窗口中显示任何内容?
  • 你能提供一个小提琴吗? html 和 javascript 。不需要 PHP。现在对选项进行硬编码。
  • 我不这么认为。因为这仅适用于 php 文件,因为 ajax 将请求发送到 php 文件并从中获取响应。我不知道如何在 jsfiddle 中暗示 php 文件?
  • 来自 ajax 的响应显示区选项列表。哪个是对的。但是,Jquery 无法获取选定的区域值。如果我在 html 表单中硬编码地区值,它只会获取值。
  • Somhow,jquery 无法获取 ajax 响应动态生成的值。'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 2013-05-07
  • 2011-07-17
  • 2013-11-12
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多