【发布时间】:2015-02-25 16:53:44
【问题描述】:
我有 2 个下拉列表。第一个包含汽车品牌,如座椅、宝马、奥迪等。 第二个我想包含用户在列表 1 中选择的特定品牌的模型。 在我当前的代码状态下,当我从列表 1 中选择 A 品牌时,第二个列表将填充列表 1 中的相同元素。所以我有一个包含完全相同记录的重复列表。
主文件:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
$css='css.css';
$doc = JFactory::getDocument();
$doc->addStyleSheet('modules/mod_alpha_table/assets/'.$css);
$db= JFactory::getDbo();
$ready = $db->getQuery(true);
$query="SELECT category_name,virtuemart_category_id from uhhu_virtuemart_categories_el_gr INNER JOIN uhhu_virtuemart_category_categories ON uhhu_virtuemart_categories_el_gr.virtuemart_category_id = uhhu_virtuemart_category_categories.category_child_id WHERE uhhu_virtuemart_category_categories.category_parent_id = 105";
$db->setQuery($query);
$options=$db->loadObjectList();
$model="";
?>
<script>
function showUser(str) {
var xmlhttp;
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("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","query.php?q="+str,true);
xmlhttp.send();
}
</script>
<div class="srchcr">
<div class="srch">
<form name="searchcar">
<form>
<select onchange="showUser(this.value)" name="cats">
<option value="none">Select Make</option>
<?php foreach ($options as $row) {
echo '<option value=' . $row->virtuemart_category_id . '>'. $row->category_name . '</option>';
}
?>
</select>
<select name="subcats" id="txtHint">
<option value="none">Select Model</option>
</select>
</form>
</div>
</div>
query.php 文件:
<?php
$doc = JFactory::getDocument();
$db= JFactory::getDbo();
$ready = $db->getQuery(true);
$q = htmlspecialchars($_REQUEST['q']);
$query='SELECT category_name,virtuemart_category_id from #__virtuemart_categories_el_gr INNER JOIN #__virtuemart_category_categories ON #__virtuemart_categories_el_gr.virtuemart_category_id = #__virtuemart_category_categories.category_child_id WHERE #__virtuemart_category_categories.category_parent_id = $q';
$db->setQuery($query);
$options=$db->loadObjectList();
foreach ($options as $row) {
echo '<option name='. $q .' value=' . $row->virtuemart_category_id . '>'. $row->category_name . '</option>';
}
?>
查询在 phpmyAdmin 进行了测试并且工作正常。似乎第一个查询被执行了两次,而不是 $query.php 文件中的查询。我还尝试将外部文件中的代码包含在主文件中,但它的故事相同。我还将第二个 $query 重命名为 $query2 并执行 $query2 但没有任何改变。有人能告诉我出了什么问题吗?
编辑: 经过休息和更多调试后,我认为这是问题的开始:
xmlhttp.open("GET","query.php?q="+str,true);
似乎由于某种原因请求,而不是 query.php 被发送到 index.php 并再次触发相同的查询。我添加了 die();在 query.php 的开头并没有发生任何事情。所以我可能需要使用 joomla 语法或其他东西吗?
【问题讨论】:
标签: javascript php ajax joomla2.5