2017-09-02 75 views
1

我是新来的Web服务,并找到一个api.php文件,我能够连接到我的MSSQL服务器和检索信息没有问题,所以这是伟大的。我现在想要将我正在拖动的数据呈现在HTML页面中。我不知道如何做到这一点,并已经做了大量的阅读,试图找出答案。我已经运行了通过JSON验证器返回的数据并进行了验证。任何人都可以给我建议如何使这个显示在网页上(这是为了证明概念)。我在IIS ......我试过很多东西,最新的是:JSON的结构和返回

<!doctype html> 
    <html> 
     <head> 
    </head> 
     <body> 
      <?php 
      $json = file_get_contents('https://myurl.com/rest/api.php/content?filter=category,cs,10&columns=id_cr,title'); 
      $data = json_decode($json); 
      echo "<pre>"; 
       print_r($data); 
      echo "</pre>"; 
      exit; 
     ?> 
     </body> 
</html> 

这里是JSON数据输出的外观 - 不知道如何访问数据的变量此格式中......

{ 
"content_data": { 
    "columns": [ 
    "id", 
    "title" 
    ], 
    "records": [ 
    [ 
    41901, 
    "Resources for Educational Excellence" 
    ], 
    [ 
    44230, 
    "The Khan Academy" 
    ], 
    [ 
    145925, 
    "Educating Your Child at Home" 
    ], 
    ] 
} 
} 

:::固定::: 我终于得到了我的代码工作!所以,最终的代码看起来像这样...

<!doctype html> 
    <html> 
     <head></head> 
     <body> 
      <?php 
       $json = file_get_contents('http://myurl.com/rest_api/api_test.php/content_data?filter=category,cs,10&columns=id,title'); 
       $data = json_decode($json, TRUE); 
       foreach ($data['content_data']['records'] as $rec) { 
        echo $rec[0] .' '. $rec[1] . '<br />'; 
       } 
      ?> 
    </body> 
</html> 

所以问题结束了,当我有我的HTTPS服务器上我api_data,我不能对任何结果拉回到我的PHP页面,但当我将api_test.php文件移动到http服务器时,它像一个魅力一样工作。任何人都可以解释为什么发生?谢谢!

而且,我只是想感谢大家对我的帮助,这对我来说是艰难的项目,但我学到了很多东西,下次应该更容易:)

+0

你们是不是要显示它内部的表? – chad

+0

我一直在想,这将工作或只是一个标题列表...我希望它是在一个响应页面上... – user1255154

回答

1

在PHP中,你将能够访问如果将json_decode的第二个参数设置为TRUE以使其成为所有数组,则数据更容易。

与您的数据意味着:

$json = '{ 
"content_data": { 
    "columns": [ 
    "id", 
    "title" 
    ], 
    "records": [ 
    [ 
    41901, 
    "Resources for Educational Excellence" 
    ], 
    [ 
    44230, 
    "The Khan Academy" 
    ], 
    [ 
    145925, 
    "Educating Your Child at Home" 
    ], 
    ] 
} 
}'; 

你会再能得到这样的数据:

$data = json_decode($json, TRUE); 

foreach($data['content_data']['records'] as $record) 
{ 
    echo '<p>' . $record[0] . '<br /> 
    ' . $record[1] . '</p>'; 
} 

我只是测试这个代码,它的工作原理:

$json = file_get_contents('https://www.advantageengagement.com/rest_api/api_test.php/content_data?filter=assignments_list,cs,c010&columns=id_cr,title'); 

$data = json_decode($json, TRUE); 

foreach($data['content_data']['records'] as $record) 
{ 
    echo '<p>' . $record[0] . '<br /> 
    ' . $record[1] . '</p>'; 
} 
+0

谢谢,我已经添加了上面的代码,但是当我去的页面,我不'没有任何东西......只是空白。我还没有能够将JSON数据拉回到.php页面 - 尽管当我把URL放在浏览器中时,我可以很好地返回数据......我觉得我错过了一些东西,我只是不知道什么:) – user1255154

+0

我已经看到(最近这个星期)从外部资源JSON是腐败,有额外的空白,有urlencoded实体,等等的外部资源获得JSON的人。你说你可以在浏览器中看到JSON,但这与查看原始json不一样。如果您允许访问实际的网址,我可以提供帮助。 –

+0

查看我更新的答案。在底部我实际上测试了代码,它对我很有用。如果您将我的代码复制到PHP文件并运行它,您会发现它确实有效。 –

1

下面是如何解析JSON数据到顶部列名的HTML表。

<!doctype html> 
    <html> 
     <head> 
    </head> 
     <body> 
     <?php 
      $json = file_get_contents('https://myurl.com/rest/api.php/content?filter=category,cs,10&columns=id_cr,title'); 
      $data = json_decode($json, TRUE); 
     ?> 
     <table> 
      <!--column names--> 
      <tr> 
       <?php 
       foreach ($data['content_data']['columns'] as $cols) { 
        ?> 
        <td><?= $cols ?></td> 
        <?php 
       } 
       ?> 
      </tr> 

      <!--record rows--> 
      <tr> 
       <?php 
       foreach ($data['content_data']['records'] as $rec) { 
        ?> 
        <td><?= $rec[0] ?></td> 
        <td><?= $rec[1] ?></td> 
        <?php 
       } 
       ?> 
      </tr> 
     </table> 
     </body> 
</html> 
+0

谢谢乍得,我调整了我的PHP页面中的代码,但我仍然无法获得任何数据返回$ file_get_contents url - 网址工作正常,如果我把它放在浏览器中,但确实不要在php页面上拉什么东西...... – user1255154

+0

如果你可以给出实际的URL,那么我们可以检查返回的JSON是否有效并且可以被PHP读取。谢谢! – chad

+0

以下是URL的结果:{“content_data”:{“columns”:[“id_cr”,“title”],“records”:[[41901,“卓越教育联邦资源”],[44230,可汗学院“],[145925,”在家教育你的孩子“],[147803,”小学组织和资源“]]} – user1255154

0

当我测试JSON字符串时,它并不是有效的。

   [ 
       145925, 
       "Educating Your Child at Home" 
       ], //this comma has json_decode failing and outputs null 

你可能会检查你的资源,在哪里得到JSONString。

为了访问JSONObject的值,你可以在PHP中像访问数组一样访问它们。因此,只需使用TRUE作为$ json_decode的第二个参数。

$json_decode($data, TRUE); 

然后,例如,你可以做到这一点。你可以把它写多用更少的代码更干净,但是我测试了这一点,它的工作原理:

<!doctype html> 
<html> 
    <head> 
</head> 
    <body> 
     <?php 
     $json = '{ 
      "content_data": { 
       "columns": [ 
       "id", 
       "title" 
       ], 
       "records": [ 
       [ 
       41901, 
       "Resources for Educational Excellence" 
       ], 
       [ 
       44230, 
       "The Khan Academy" 
       ], 
       [ 
       145925, 
       "Educating Your Child at Home" 
       ] 
       ] 
      } 
      }'; 

     $data = json_decode($json, TRUE); 
     var_dump($data); 
     echo "<pre>"; 
      //print out the data a 
     echo "<h2>Data</h2>"; 

     echo "<table>"; 

     echo "<tr>"; 
     //access column data and print out the values 
     echo "<td>". $data['content_data']['columns'][0]."</td>"; 
     echo "<td>". $data['content_data']['columns'][1]."</td>"; 

     echo "</tr>"; 



     for($i = 0; $i < count($data['content_data']['records']);$i++) { 

      echo "<tr id=" .$data['content_data']['records'][$i][0] . ">"; 

      //acces records and print a table with that data 
      echo "<td>" . $data['content_data']['records'][$i][0]."</td>"; 
      echo "<td>" . $data['content_data']['records'][$i][1]."</td>"; 

      echo "</tr>"; 
     } 


     echo "</table>"; 
      //var_dump($data->content_data); 
     echo "</pre>"; 
     exit; 
    ?> 
    </body> 

其结果将是这个

Result of that code

+0

感谢上面的代码。我一整天都在做这件事,而且我很茫然。当我复制上面的代码时,我得到了NULL的数据转储。我认为这是因为我在$ file_get_content ....中的URL中传递参数。我不知道... – user1255154