繁体   English   中英

使用PHP和Javascript的组合填充下拉列表

[英]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&amp;task=write&amp;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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM