我正在尝试通过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代码,但它没有创建下拉列表..
为什么呢?我该怎么做
答案 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。任何选择都不会影响您的脚本。