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