在PHP中,我从mySQL编写了一个JSON数组。我想在不同的PHP文件中解码它

时间:2014-04-15 02:30:19

标签: javascript php mysql arrays json

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

但它不起作用..

2 个答案:

答案 0 :(得分:1)

当您返回JSON编码字符串时,最好是发送正确的标头。您应该返回JSON(您仍然可以使用print函数):

<?php
header('Content-Type: application/json');
echo json_encode($data);

现在,当您检索此输出时,将其发送到将返回对象的json_decode函数。

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`