如何动态添加下拉列表

时间:2013-08-20 10:01:22

标签: php javascript html

我正在尝试通过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代码,但它没有创建下拉列表..

为什么呢?我该怎么做

2 个答案:

答案 0 :(得分:1)

您使用PHP生成JavaScript,因为JavaScript由浏览器解释,而PHP由服务器处理,下面的代码将无效

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

让您了解该过程如下,

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

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

链接说明了带下拉列表的ajax - &gt; http://imasters.com.br/artigo/3918/javascript/ajax-e-php-carregando-dados-sem-refresh/

答案 1 :(得分:0)

这是一个字符串定界符问题。您在

中使用单引号'作为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 docs。任何选择都不会影响您的脚本。