2017-07-17 69 views
0

我必須創建一個JavaScript數組,其元素是硬編碼的,但我想從數據庫中提取它們的元素。可能嗎?如果是這樣,怎麼樣? 這裏是我的代碼如何使用yii從數據庫初始化javascript數組?

<div id="wrapper"></div> 
<script> 
var container = document.getElementById("wrapper"); 
var array = ["../Images/stu_9.png", "../Images/stu_9.png", "../Images/stu_9.png", "../Images/stu_9.png"]; 
for(i=0; i<array.length; i++){ 
    container.insertAdjacentHTML('beforeend', '<img src="'+array[i]+'">'); 
} 
</script> 
</head> 
<body> 
<div id="wrapper"></div> 
+0

所以你問如何從一個場圖像的位置在數據庫中,並傳遞給'VAR array' ?您需要先將它們寫入DOM才能訪問它們。你也有重複的'ID's,並且不應該使用'array'作爲變量名稱,因爲它與'Array'名稱相鄰。 –

+0

請詳細說明你的答案我可以在哪裏寫文檔對象模型? – Alvi

回答

0

假設你已經保存在數據庫字段中的圖像路徑,你需要將它們寫入DOM,然後才能訪問它們。這將通過迴應頁面本身的變量。如果你不想讓這些文件路徑對訪問者可見,你可以用隱藏

<?php 

$image_paths = []; // An array containing your image paths, retrieved from the database 

echo "<div id='images'>"; 
foreach($image_paths as $image_path) { 
    echo "<div>" . $image_path . "</div>"; 
} 
echo "</div>"; 

?> 

這會給你:

<div id="images"> 
    <div>../Images/stu_9.png</div> 
    <div>../Images/stu_10.png</div> 
    <div>../Images/stu_11.png</div> 
</div> 

等。

然後,您可以隱藏這一點,所以它不會顯示給遊客,但仍是在DOM可見:

#images { 
    display: none; 
} 

然後,您可以目標這種無形的DOM使用您的JavaScript:

var images_array = []; 
 
var images = document.getElementById('images'); 
 

 
for (var i = 0; i < images.children.length; i++) { 
 
    images_array.push(images.children[i].innerHTML); 
 
} 
 

 
console.log(images_array);
#images { 
 
    display: none; 
 
}
<div id="images"> 
 
    <div>../Images/stu_9.png</div> 
 
    <div>../Images/stu_10.png</div> 
 
    <div>../Images/stu_11.png</div> 
 
</div>

還要注意,在你上面的代碼,你有重複的ID ,這是無效的標記。此外,您不應該使用array作爲變量名稱,因爲它與名稱Array連續。在我的例子中,我用images_array代替了它。

希望這會有所幫助! :)

+0

但我怎樣才能檢索數據庫中的圖像路徑? 此代碼無效 <?php $ image_paths = []; //包含圖像路徑的數組,從數據庫中檢索 echo「

"; foreach($image_paths as $image_path) { echo "
" . $image_path . "
」; } echo「
」; ?> Alvi

+0

我不確定數據庫(和連接方法)的**精確**配置,但考慮到您正在使用Yii,您可以使用像'$ array = Yii :: app() - > db-> createCommand() - >選擇( '圖像') - 從( '表')> - > queryAll();'。有關更多信息,請參閱[**本頁**](http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder)。一旦你將你的信息輸入到數組中,上面的**將**工作(如在示例中所證明的)。 –

+0

添加上面的代碼後,給出錯誤 「調用未知方法:yii \ db \ Command :: select()」 $ image_paths = Yii :: $ app-> db-> createCommand() - > select 'Car_Image') - > from('register_car') - > queryAll(); – Alvi

0
You can use client side script for this.Follow below steps 
    1. Get an array of images path from database in controller action. 
    2 Render this array on view part. 
    3. Write client side script in your view file i.e. $this->registerJs("script code here"); 

下面是完整代碼視圖文件:

<?php 
$this->registerJs('var container = document.getElementById("wrapper"); 
var array = '.$arr_Images_From_controller.'; 
for(i=0; i<array.length; i++){ 
container.insertAdjacentHTML("beforeend", "<img src="/'+array[i]+/'">"); 
}'); 
?>