0

编辑:

SQL

$valuefromjs = $_REQUEST['var'];
$result6 = "SELECT DISTINCT $valuefromjs FROM persons ORDER BY $valuefromjs ASC";
$result7 = mysql_query($result6);
$num = mysql_num_rows($result7);  

$dataRanges[0] = array('dataRanges');       
        for ($i=1; $i<($num+1); $i++)
        {
        $dataRanges[$i] = array( (int) mysql_result($result7, $i-1) );
        }

echo json_encode($dataRanges);

HTML

<select id="combo2" class="combo" data-index="2"></select>

jQuery

$('#1combo').on('change', function () {
var jsonVar = $.ajax({
url : "visits/comboquery.php?var="+$(this).val(), 
dataType: "json",
async: false,
success: function(response) {
}
}).responseText;
for (var i=1; i<objVar.length;i++)
    {
    $('#combo2').html("<option value="+objVar[i]+">"+objVar[i]+"</option>");
    }
});

问题:

我有一个包含查询结果的数组。现在我需要结果是组合 2 选项,有什么问题?

4

2 回答 2

0

据我了解,combo1 的选择将定义为构建combo2 运行哪个查询。

问题:用于构建combo2 的PHP 是在服务器端解析的,即PHP 代码总是在页面到达用户浏览器并且您的javascript 开始执行时完成执行。

如果您有一组有限的可能查询可以生成秒组合(应该是这种情况,因为 combo1 具有有限数量的选项),您可以创建所有这些查询,每个都有不同的 id,并保持它们隐藏(css “显示:无”)。

<select id="firstCombo2" class="combo2">
    ...
</select>
<select id="secondCombo2" class="combo2">
    ...
</select>

等等

现在,当用户从 combo1 中进行选择时,您可以决定要显示哪一个隐藏的 combo2(css "display: block")。

$('select#combo1).on("change", function(){
    $('select.combo2').css('display','none'); //hide all combo2's
    if($(this).val()=='Opt1'){
            $('select#firstCombo2').css('display','block');
    }else if($(this).val()=='Opt2'){
            $('select#secondCombo2').css('display','block');
    }
}
于 2013-01-08T15:51:59.027 回答
0

您应该使用 AJAX 来解决您的问题。在combo1 onChange 上调用AJAX 调用到您的服务器并发送combo1 的选定值。然后在您的 php 代码中使用从 AJAX 请求接收到的值运行查询,并使用字符串中的选项构造一个新的组合框并回显该字符串。您可以使用该 AJAX 响应来填充新的 combo2。

于 2013-01-08T17:54:52.793 回答