我正在做一个表单,其中子类别是根据类别决定的,但类别和子类别都是从数据库中提取的。 前面,当数据库不在其中时,我使用了javascript populate方法,其中数据是虚拟的,所以我试图在其中包含从数据库中获取子类别的代码。 这是我到现在为止的代码
<label>Job Category*</label>
<?php
$dataset = $objCmn->getCat(); \\for getting category from database
?>
<select id="jb-category" class="form-control" name="jb_category" onchange="populate(this.id, 'sub-category')" required>
<option>Choose Category</option>
<?php
foreach ($dataset as $key => $cat) {
echo '<option value="' . $cat['maincategory_name'] . '">' . $cat['maincategory_name'] . '</option>';
}
?>
</select>
<label>Sub Category*</label>
<select id="sub-category" class="form-control" name="sub_category" required>
</select>
用于在类别的基础上填充子类别的函数
function populate(s1, s2)
{
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
var categoryValue = s1.value;
alert(categoryValue);
document.writeln(categoryValue);
<?php $category_name = "<script>document.writeln(categoryValue)</script>";
$categoryName = $objCmn->getSubCategory($category_name);
foreach($categoryName as $key=>$row)
{
?>
var optionArray = ["<?php $row['cat_name'] ?>|<?php $row['cat_name'] ?>",];
<?php
}
?>
for (var option in optionArray)
{
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
}
</script>
有没有其他的方法可以将php代码嵌入到JS中。 之前,我曾尝试关闭脚本标签之前的php标签和打开相同的php关闭标签之后,但它也是不工作的。
一种更优雅的方法是获取所选类别的标识符,通过ajax将其发送到php脚本,获取相应的子类别,将它们返回javascript,然后填充子类别选择。
如果您不熟悉AJAX,这可能会有一些帮助。
您还可以在这里查看一些jquery方法;