如何动态添加下拉列表


How to add dropdown dynamically

我正试图通过javascript添加动态下拉菜单。

我有一个有数字的下拉列表,当选中时创建下拉列表。但是我想通过javascript添加动态下拉列表。我该怎么做?

这是php代码

代码:

<?php
        try {
            $dbh = new PDO('mysql:dbname=theaterdb;host=localhost','tiger','tiger');
        } catch (PDOException $e) {
            echo 'Connection failed: ' . $e->getMessage();
        }
        $sql = "SELECT theater_name FROM theater;";
        $sth = $dbh->prepare($sql);
        $sth->execute();
        echo "<select name='theater_name' id='course' onchange='showUser(this.value);'>";
        echo "<option>----Select Theater----</option>"; 
        while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            echo "<option value='" . $row['theater_name'] ."'>" . $row['theater_name']. "</option>";
        }
        echo "</select>";
        ?>

此php代码从mysql数据库中获取下拉值。但是这个下拉列表将从javascript 动态创建

javascript代码

function create(param) {
    'use strict';
    var i, target = document.getElementById('screens');
    target.innerHTML = '';
    for(i = 0; i < param; i += 1) {
       target.innerHTML +='</br>';
       target.innerHTML +='Movie in hall '+i+'  ';
       target.innerHTML += '<?php
        try {
            $dbh = new PDO('mysql:dbname=theaterdb;host=localhost','tiger','tiger');
        } catch (PDOException $e) {
            echo 'Connection failed: ' . $e->getMessage();
        }
        $sql = "SELECT theater_name FROM theater;";
        $sth = $dbh->prepare($sql);
        $sth->execute();
        echo "<select name='theater_name' id='course' onchange='showUser(this.value);'>";
        echo "<option>----Select Theater----</option>"; 
        while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            echo "<option value='" . $row['theater_name'] ."'>" . $row['theater_name']. "</option>";
        }
        echo "</select>";
        ?>';
       target.innerHTML +='  '+'Timings '+'  ';
       target.innerHTML += '<input type="text" name="timings">';
       target.innerHTML +='</br>';
       target.innerHTML +='</br>';
    }
}

所以现在我已经用javascript添加了这个php代码,但它并没有创建下拉列表。。

为什么?如何进行

您正在使用PHP生成JavaScript,因为JavaScript由浏览器解释,PHP由服务器处理,下面的代码将不起作用

target.innerHTML += '<?php'; ...

为了让您了解以下过程,

服务器读取并处理php服务器从php生成HTMLHTML中包含的JavaScript由浏览器进行解释

您可以做的是将数据传递给javascript,并生成下拉列表。或者,如果您需要来自User的信息(作为参数)来生成下拉列表,您可以通过ajax发出请求。

链接用下拉菜单解释ajax->http://imasters.com.br/artigo/3918/javascript/ajax-e-php-carregando-dados-sem-refresh/

这是一个字符串分隔符问题。中的javascript字符串使用单引号'

target.innerHTML += '<?php

因此字符串应该在下一个单引号的第一个结束,也就是这行中的第一个回显:

echo "<select name='theater_name' id='course' onchange='showUser(this.value);'>";

Javascript解释器在...<select name=中结束字符串。在那之后没有运算符或;,(有字符t)并且它卡住了。

您只需要在每个单引号前面添加一个反斜杠',作为转义:

echo "<select name=''theater_name'' id=''course'' onchange=''showUser(this.value);''>";

或者,您可以将字符串分隔符替换为echo,对javascript和php使用相同的分隔符,例如:

echo '<select name="theater_name" id="course" onchange="showUser(this.value);">';

同样的情况出现在中的第三个回波中。

使用单引号'或双引号"作为字符串分隔符在PHP中有一些不同:双引号字符串有更多的转义序列,并且可以扩展变量。选择时请参考PHP文档。任何选择都不会对脚本产生任何影响。