这里我试图从数据库中获取数据到组合框中,其中我有10个表。我有两个组合框,在第一个框中我从数据库调用选项,它将是第一个表,选项如a,b,c,d。现在,当我在第一个框中选择“a”时,它应该通过php调用相应的值,并且该值将来自另一个表,并且这两个表中没有任何共同的键。 与选择'b'时相同,它将调用第3个表中的另一个值。
所以在这里我尝试了if else条件,但我能得到输出。 有人请改进jquery错误,我应该以哪种方式匹配它的条件。
这是我的代码html页面
<html>
<body>
<select id="a1_title">
</select>
<select id="a2_title">
</select>
<script src="jquery-2.0.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.getJSON("drpdwn.php", success = function(data){
var items="";
for(var i = 0; i< data.length; i++){
items +="<option value='"+ data[i].toLowerCase() +"'>" + data[i] +"</option>";
}
$("#a1_title").append(items);
$("#a1_title").change();
});
$("#a1_title").change(function(){
if( data.length == 1) // here i have tried to match the condition from ID but it doesn't work
{
alert("b");
$.getJSON("lulc_db.php",success = function(data){
alert("okay");
var items="";
for(var i = 0; i< data.length; i++){
items+="<option value='"+data[i].toLowerCase()+"'>"+data[i]+"</option>";
}
else if( data.length == 2)
{
alert("b");
$.getJSON("soil_db.php",success = function(data){
alert("okay");
var items="";
for(var i = 0; i< data.length; i++){
items+="<option value='"+data[i].toLowerCase()+"'>"+data[i]+"</option>";
}
$("#a2_title").append(items);
});
}
});
});
</script>
</body></html>
这是drpdown.php页面。此页面值将成功进入第一个选择框。
<?php
$host = "localhost";
$user = "postgres";
$pass = "admin";
$db = "Querybuilderdb";
$con = pg_connect("host=$host dbname=$db user=$user password=$pass")
or die ("Could not connect to server\n");
$query = "SELECT id, name FROM tab";
$result = pg_query($con, $query);
if(pg_num_rows($result)){
$data=array();
while($row=pg_fetch_array($result))
{ array_push($data, $row["name"]);
}
echo json_encode($data);
}
?>
这里的lulc_db.php。这个页面的值应该出现在第二个选择框中。像这样,我有8个其他的php页面,我已经显示在第二个组合框中。
<?php
require "config.php";
$query = "SELECT distinct level_1 FROM pachgaon_LULC";
$result = pg_query($con, $query);
if(pg_num_rows($result)){
$data=array();
while($row=pg_fetch_array($result))
{ array_push($data, $row["level_1"]);
}
echo json_encode($data);
}
?>
谢谢你提前:)
答案 0 :(得分:1)
考虑几个变化:
for
循环
多维javascript数组#a1_title
虽然我无法在没有数据和表关系的情况下重新创建示例。下面是一个使用编程语言试图维护初始代码的通用示例。调整您的实际脚本。请参阅jsfiddle上的演示(但这会使用带有点击事件的嵌入式json字符串):
PHP脚本 (重现json数据)
// DynamicOptions1.php
<?php
$languages = [];
$languages[][1] = "general purpose";
$languages[][2] = "special purpose";
echo json_encode($languages);
?>
// DynamicOptions2.php
<?php
$general = [];
$general[][1] = "Java";
$general[][2] = "PHP";
$general[][3] = "Perl";
echo json_encode($general);
?>
// DynamicOptions3.php
<?php
$special = [];
$special[][1] = "SQL";
$special[][2] = "XSLT";
echo json_encode($special);
?>
HTML / JQuery
<html>
<body>
<select id="a1_title">
</select>
<select id="a2_title">
</select>
<script src="jquery-2.0.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.getJSON("DynamicOptions1.php", success = function(data){
var items="";
for(var i = 0; i< data.length; i++){
for (var item in data[i]) {
// RETAIN JSON KEY AS OPTION VALUE, JSON VALUE AS OPTION TEXT
items +="<option value='"+item+"'>" + data[i][item].toLowerCase() +"</option>";
}
}
$("#a1_title").append(items);
$("#a1_title").change();
});
$("#a1_title").change(function(){
// OBTAIN SELECTED VALUE
var selectedValue = $(this).find(":selected").val();
if( selectedValue == "1") {
$.getJSON("DynamicOptions2.php",success = function(data){
var items="";
for(var i = 0; i< data.length; i++){
for (var item in data[i]) {
items+="<option value='"+data[i][item]+"'>" + data[i][item].toLowerCase() +"</option>";
}
}
// REMOVE PREVIOUS ITEMS
var myNode = document.getElementById("a2_title");
while (myNode.firstChild) {
myNode.removeChild(myNode.firstChild);
}
// ADD NEW ITEMS
$("#a2_title").append(items);
});
}
else if( selectedValue == "2") {
$.getJSON("DynamicOptions3.php",success = function(data){
var items="";
for(var i = 0; i< data.length; i++){
for (var item in data[i]) {
items+="<option value='"+data[i][item].toLowerCase()+"'>"+data[i][item].toLowerCase()+"</option>";
}
}
// REMOVE PREVIOUS ITEMS
var myNode = document.getElementById("a2_title");
while (myNode.firstChild) {
myNode.removeChild(myNode.firstChild);
}
// ADD NEW ITEMS
$("#a2_title").append(items);
});
}
});
});
</script>
</body>
</html>