0

我正在尝试通过 javascript 添加动态下拉列表。

i have a dropdown which has numbers, when selected creates the drop down. 但我想通过 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 代码,但它没有创建下拉列表..

为什么?我怎样才能做到这一点

4

2 回答 2

1

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

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

为了让您了解过程如下,

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

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

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

于 2013-08-20T13:19:49.687 回答
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);\'>";

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

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

在第三个回声中也会发生同样的情况,在while中。

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

于 2013-08-20T10:21:39.693 回答