2013-08-20 206 views
0

我想通過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>'; 
    } 
} 

所以現在我已經加入此PHP代碼在JavaScript,但它也沒有創造下拉創建..

爲什麼?我該怎麼辦

+0

是它加入「電影的殿堂」和「計時」在你的HTML? – Thundar

+0

@ F.Haymard'Ettory在添加之前,但在添加php代碼之後,它並未添加這些代碼 –

+0

JavaScript在瀏覽器上運行,PHP在服務器上運行,因此瀏覽器無法解釋PHP腳本。 –

回答

0

這是一個字符串分隔符問題。您正在使用您的JavaScript字符串單引號'

target.innerHTML += '<?php 

因此字符串應該是在明年第一單引號結束,這是第一次在這條線附和道:

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

Javascript解釋結束字符串...<select name=。之後沒有運營商或;,(有字符t),它stucks。

你應該只添加一個反斜槓\在每個單引號的前面,爲逃生

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

或者你也可以使用相同的分隔符兩種JavaScript的替換字符串分隔符爲您的迴音,和PHP等:

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

同樣發生在第三回波,在

PHP中的一些差異,而使用單'或雙引號"作爲字符串分隔符:雙引號中的字符串有更多的轉義序列,並做擴展變量。在做出選擇時請參考PHP docs。任何選擇對您的腳本都沒有影響。

1

您正在使用PHP生成JavaScript作爲JavaScript是由瀏覽器解釋和服務器PHP處理下面的代碼將無法正常工作

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

對於你理解過程如下,

服務器讀取和處理PHP 服務器從PHP 生成HTML的是包含在HTML是由瀏覽器

你CA的JavaScript解釋n do是將數據傳遞給javascript,並生成下拉菜單。 或者如果您需要用戶的信息(作爲參數)來生成下拉列表,您可以通過ajax發出請求。

鏈接有關使用下拉阿賈克斯說明 - >http://imasters.com.br/artigo/3918/javascript/ajax-e-php-carregando-dados-sem-refresh/

+0

這不是他使用的代碼:服務器端它的工作原理。 – Thundar