我正试图通过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文档。任何选择都不会对脚本产生任何影响。