2017-07-17 34 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]+/'">"); 
}'); 
?>