[英]Populating a drop down list with a combination of PHP and Javascript
我有以下观点 :
<form action=<?=$target;?> method="post" name="editForm">
<div id="page1">
<select id="categories" name="category" onmouseover="populateCategory(<?=$result?>, <?=$id?>)" >
</select>
</div>
</form>
它在select标签上使用以下javascript函数 :
function populateCategory(subCategories, id) {
var select = document.getElementById(id);
var opt = document.createElement("option");
opt.text = "--Please make a selection--";
for (i = 0; i < subCategories.length; i++) {
var opt = document.createElement("option");
opt.value = i;
opt.text = subCategories[i];
select.add(opt);
}
}
传递给函数的参数是以下变量:
$result = $this->getCategories(0);
$id = 'categories';
它调用以下函数
public function getCategories($parent, $published = 1) {
//Sanitize Params...
//$sanParent = $this->db->getEscaped($parent);
//$sanPublished = $this->db->getEscaped($published);
$query =
"SELECT * FROM #__adsmanager_categories
WHERE parent = " . $parent .
" AND published = " . $published;
$this->db->setQuery($query);
$result = $this->db->loadAssocList();
var_dump($parent);
if (!$result) {
return false;
}
return $result;
}
低调:
我发布的最后一个函数向数据库发出请求,获取用于创建下拉列表的类别列表。 我认为,如果我将获得的类别传递给JavaScript函数,我可以轻松地填充它。 我做错了吗? 我觉得这是一个JavaScript问题,因为函数调用似乎甚至没有发生。 例如,当我打开浏览器调试器时,没有迹象表明它是否被调用。
更新:
这是html-source列出的内容:
<script type="text/javascript">
function populateCategory(subCategories, id) {
var select = document.getElementById(id);
var opt = document.createElement("option");
opt.text = "--Please make a selection--";
for (i = 0; i < subCategories.length; i++) {
var opt = document.createElement("option");
opt.value = i;
opt.text = subCategories[i];
select.add(opt);
}
}
</script>
<form action=/index.php?option=com_adsmanager&task=write&Itemid=1 method="post" name="editForm">
<div id="page1">
<select id="categories" name="category" onmouseover="populateCategory(Array, categories)" >
</select>
</div>
</form>
我不是一个javascript问题,而是理解问题。
which calls the following function
< - 这是你的错误。
JS无法调用PHP函数。 因为它在浏览器中运行,而PHP在服务器上运行,距离千里之外。
相反,它确实PHP创建了所有的JS以及HTML和东西。
因此,您的PHP代码必须创建已填充数据的JS函数调用。
你检查过HTML源代码吗? 它是否包含正确的JS函数调用?
更新看看,一旦你发布了实际的JS,它变得像鸡蛋一样简单
<select id="categories" name="category" onmouseover="populateCategory(Array, categories)" >
它只是说“数组”而不是实际数据。
意味着您尝试将数组作为字符串打印。 这显然是行不通的。
使用一些循环来迭代该数组并以适当的(for JS)格式打印它的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.