我是Web服务的新手,发现了一个api.php文件,我能够连接到我的MSSQL服务器并检索信息而没有问题,所以这很棒。我现在想把我提取的数据放在一个html页面中。我不知道该怎么做,并且已经做了很多阅读以试图弄明白。我已经运行了通过JSON验证器返回的数据并进行了验证。任何人都可以给我关于如何在网页上进行显示的建议(这是为了概念证明)。我在IIS上...我尝试了很多东西,最新的是:
<!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"
],
]
}
}
::: FIXED ::: 我终于让我的代码工作了!所以,最终的代码看起来像这样......
<!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 :(得分: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.myurl.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>';
}
答案 1 :(得分: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>
答案 2 :(得分: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>
结果就是这个