我有以下问题,我的php代码从dB获取所需的数据:
<?php
require('dB_connect.php');
$reportID = intval($_GET['q']);
$sql = "SELECT nmech, nelect, nplant, ncivil FROM `flashreport` WHERE ID = '".$reportID."'";
$result = mysqli_query($dbc, $sql);
$emparray = array();
while($row =mysqli_fetch_assoc($result))
{
$emparray[] = $row;
}
file_put_contents("newport.json", json_encode($emparray,JSON_FORCE_OBJECT));
mysqli_close($dbc);
?>正如您所看到的,这将写入json文件-结果:
{"0":{"nmech":"2.00","nelect":"2.00","nplant":"2.00","ncivil":"2.00"}}当我使用以下js代码从json文件中提取时:
$.getJSON('newport.json', function(data) {
console.log(data);使用chrome的控制台日志显示以下内容:
[Object]
0: Object
nmech: "3.00"
__proto__: Object
length: 1只显示第一个键/值对,而不是所有的4K/V对?有人能解释一下我做错了什么吗?
发布于 2016-02-11 19:48:46
将结果写入json文件是过分的,IMHO。为什么不直接将json添加到模板或页面视图(PHP)中。
<script>
// Create settings from PHP/Session and
// Initialize Registration Namespace
var registrationSettings = <?php echo (!empty($data)) ? @json_encode($data) : json_encode(array()); ?>;
Registration.init({ settings: window.registrationSettings });
</script>显然,您没有注册命名空间对象,但这只是在页面首次加载时从PHP设置设置的示例方法。
所有你真正需要它输出一些数据。
<script>
var newport = <?php echo (!empty($emparray)) ? @json_encode($emparray) : json_encode(array()); ?>;
</script>或者是一种更简单的写作方式。
<script>
var newport = <?php echo (!empty($emparray)) ? @json_encode($emparray) : '[]'; ?>;
</script>我可以看到您试图文件(或缓存)结果。您可能应该在PHP控制器中编写一个AJAX方法来处理请求。数据可以在Memcached或其他快速数据处理程序中缓存服务器端。大多数PHP框架都支持memcached。
发布于 2016-02-11 19:48:10
这是可以的,因为PHP数组如下所示:
<?php
$arr = [
[
"key1" => "value1",
"key2" => "value2",
]
]必须使用数据访问第一个元素的key1部分。
另一个(更好的解决方案)是不要在php中使用while循环,因为在您的情况下,您期望从mysql返回一个元素。然后像这样使用:
<?php
require('dB_connect.php');
$reportID = intval($_GET['q']);
$sql = "SELECT nmech, nelect, nplant, ncivil FROM `flashreport` WHERE ID = '".$reportID."'";
$result = mysqli_query($dbc, $sql);
//Get first row from db.
$emparray = mysqli_fetch_assoc($result);
file_put_contents("newport.json", json_encode($emparray,JSON_FORCE_OBJECT));
mysqli_close($dbc);
?>现在,您的数据将在javascript中,正如您在开始时所期望的那样。
https://stackoverflow.com/questions/35348564
复制相似问题