在Php中,我从MySQL表编码了一个JSON数组。我想在不同的Php文件中解码它。我想通过不同文件的JavaScript访问数据。有人请帮帮我。
我的代码是:
$serverName = "(local)";
$connectionInfo = array( "Database"=>"sample");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn )
{
echo "Connection established.<br/>";
}
else
{
echo "Connection could not be established.<br/>";
die( print_r( sqlsrv_errors(), true));
}
$str="Select * from sam1";
$res=sqlsrv_query($conn,$str) or die("Error !");
$response=array();
while( $row = sqlsrv_fetch_array( $res, SQLSRV_FETCH_ASSOC) )
{
$response['tdata'][]=$row;
}
print(json_encode($response));
输出是:
{"tdata":[{"id":"1","name":"aaa"},{"id":"2","name":"bbb"},{"id":"3","name":"ccc"}]}
我的解码功能是:
$data = file_get_contents('db2.php');
$data1 = json_decode($data, true);
print($data1);
但它不起作用..
答案 0 :(得分:1)
当您返回JSON
编码字符串时,最好是发送正确的标头。您应该返回JSON
(您仍然可以使用print
函数):
<?php
header('Content-Type: application/json');
echo json_encode($data);
现在,当您检索此输出时,将其发送到将返回对象的json_decode
函数。
file_get_contents
函数检索文件的内容,但不解析它。要检索文件的内容:
通过URL调用它(不要使用这个我为了学习目的而显示此方法,如果allow_url_fopen
指令是,则此函数不会加载URL off
,您可以使用curl
库(here))
$json = file_get_contents('www.example.com/db2.php');
echo json_decode($json, true);
包含相对路径
$json = (include "db2.php");
echo json_decode($json, true);
在此特定情况下,db2.php
必须使用return
语句,如此
return json_encode($response);
将ob_*
与include
一起使用,这次您不需要return
文件中的db2.php
ob_start();
include "db2.php";
$json = ob_get_contents();
ob_end_clean();
echo json_decode($json, true);
答案 1 :(得分:0)
看起来你用db2.php的文本填充$ data而不是在php中运行文件的输出。试试这个:
$data = `php db2.php`