【发布时间】:2017-02-16 13:26:50
【问题描述】:
目标:用户点击一个按钮,它从数据库中检索 json 的最新记录并将绿色状态更新为 1
到目前为止,我有什么,所有代码都在一个文件 index.php 中
php代码
$sql = "SELECT json FROM `smartlight` ORDER BY timestamp desc limit 1";
$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));
//create an array
$emparray = array();
while($row =mysqli_fetch_assoc($result))
{
$emparray[] = $row;
}
然后是html
<a href="#" class="btn btn-default" onclick="myFunction()">More Options</a>
然后是javascript
<script type="text/javascript">
function myFunction(){
var emparray = <?php echo json_encode($emparray) ?>;
console.log ( emparray );
for (var i=0; i<emparray.length; i++) {
if (emparray[i].device == "greenled") {
emparray[i].state= "1";
break;
}
}
console.log ( emparray );
}
</script>
两个 console.log 产生相同的东西...
"{"smartdevices":[{"device":"greenled", "state":"0"},{"device":"redled", "state":"1"}]}"
是不是因为在我的 javascript 中,我试图循环一些尚未处于正确状态的东西,以便像这样循环?
提前致谢
【问题讨论】:
-
你不能像这样混合使用 JavaScript 和 PHP。 PHP 在服务器端呈现,当发出请求时,JavaScript 在页面加载后发生。您需要研究 Ajax。
-
你有什么问题?
-
@OptimusCrime 这不是问题
-
寻找类似的东西:
emparray[].smartdevices[i].device == "greenled" -
@charlietfl 哦,我可能误会了。他只是想在单击按钮时显示预先渲染的东西?在那种情况下,你是对的。我认为这是不使用 ajax 的动态数据加载的经典案例。
标签: javascript php html json database