Javascript php/mysql将数组写入json文件

Javascript php/mysql将数组写入json文件,javascript,php,mysql,json,Javascript,Php,Mysql,Json,我有以下问题,我的php代码从数据库获取所需的数据: <?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();

我有以下问题,我的php代码从数据库获取所需的数据:

<?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);

?>
当我使用以下js代码从json文件中提取时:

$.getJSON('newport.json', function(data) {
console.log(data);
使用chrome的控制台日志显示以下内容:

[Object]
0: Object
nmech: "3.00"
__proto__: Object
length: 1

仅显示第一个键/值对,而不是全部4个K/V对?有人能解释一下我做错了什么吗

这没问题,因为您的PHP数组如下所示:

<?php 
$arr = [
    [
        "key1" => "value1",
        "key2" => "value2",
    ]
]

IMHO,将结果写入json文件是过分的。为什么不将json添加到模板或页面视图(PHP)中呢


//从PHP/Session和
//初始化注册命名空间
var注册设置=;
init({settings:window.registrationSettings});
显然,您没有注册名称空间对象,但这只是在页面首次加载时从PHP设置设置的示例方法

所有你真正需要它来输出一些数据

<script>
    var newport = <?php echo (!empty($emparray)) ? @json_encode($emparray) : json_encode(array()); ?>;
</script>

var newport=;
或者更简单的方法是

<script>
    var newport = <?php echo (!empty($emparray)) ? @json_encode($emparray) : '[]'; ?>;
</script>

var newport=;

我可以看到您正在尝试将结果归档(或缓存)。您可能应该在PHP控制器中编写一个AJAX方法来处理请求。数据可以缓存在Memcached中的服务器端或其他一些快速数据处理程序中。大多数PHP框架都支持memcached。

Try
console.log(数据[0])是否检查文件内容是否成功放置?您只是假设已写入更新的json文件。在您的示例中,在执行console日志和文件.trued console.log(数据[0])时,您的nmech值不正确;结果是Object{nmech:“3.00”}@themightysapien-先生,您能详细说明一下吗?您已经尝试了您的建议,但这不起作用,仍然只输出相同的Object{nmech:“3.00”}接受了您的建议,编写了一个AJAX方法,效果不错,不确定jQuery为什么不能工作?可能是服务器没有提供具有正确头的json文件。使用PHP,您应该手动设置标题:header('Content-type:application/json');echo json_编码($output);
<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>
<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>