将数据返回到网页

时间:2015-09-16 03:10:29

标签: php curl joomla

我正在努力建立一个网站,在其中我可以追踪我的健康和营养。

我想使用美国农业部提供的API http://ndb.nal.usda.gov/ndb/doc/apilist/API-FOOD-REPORT.md

这就是我想去的地方

http://nutritiondata.self.com/facts/cereal-grains-and-pasta/5680/2

不完全相同但相似,但持续跟踪并能够将我吃过的食物记录到我自己的数据库中。

欣赏那里有提供此功能的应用程序(myplate),例如我真的很喜欢自己做这种事情的挑战。

我已经设置了一个Joomla网站, 我已经检查过CURL是否可用并且处于活动状态 我已经安装了NoNumber的Sorcerer 我已经阅读了很多关于卷曲事件构建的文章。

如何将数据返回到我的页面 最接近的(我认为我已经有了)

$ch = curl -H "Content-Type:application/json" -d '{"ndbno":"01009","type":"f"}' DEMO_KEY@api.nal.usda.gov/ndb/reports;

$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch); curl_close($ch); fclose($fp);

这使我的网站脱机并出现错误Parse错误:语法错误,意外的''“Content-Type:application / json'(T_CONSTANT_ENCAPSED_STRING)在/ mounted-storage / home147 / sub036 / sc85544-PGMS / Domain / plugins / system / sourcerer / helper.php(570):第8行的运行时创建函数

致命错误:函数名称必须是第575行/mounted-storage/home147/sub036/sc85544-PGMS/Domain/plugins/system/sourcerer/helper.php中的字符串。

1 个答案:

答案 0 :(得分:0)

使用Sorcerer时,您可能希望以WYSIWYG模式编辑内容。你的sytax看起来像:

{source}
<?php
$ch = curl -H "Content-Type:application/json" -d '{"ndbno":"01009","type":"f"}' DEMO_KEY@api.nal.usda.gov/ndb/reports;
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch); curl_close($ch);
fclose($fp);
{/source}

请注意,如果您这样做,您的“源代码”很可能是URL编码的。我提到这一点是因为我怀疑单引号或双引号可能会干扰内容解析。这可以通过编写代码并封装它来解决(使用{source} ... {/ source}处于wysiwyg模式。但这只是猜测。

另一个选择是,如果你需要做的就是显示JSON API响应的内容,你可能想要使用jQuery Ajax。

示例:

我将首先向您展示示例jQuery Ajax语法,然后显示可显示输出的div容器的html。请注意,标题行是可选的(取决于API的要求)。

jQuery(document).ready(function(){
        var requestUrl= "https://www.annatech.com/api/v1/content/single/31";
        jQuery.ajax({
            url: requestUrl,
            type: "GET",
            headers: { 'token': '9YZi+i7tPpLedg9LtFcuu8rUL3eiCnYuGnNH:650' },
            success: function (resultData) {
                jQuery( "#output" ).append(resultData.article.introtext).html;
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert('error');
            },

            timeout: 120000
        });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h1>Test AJAX page load</h1>
<div id="output"></div>

以上示例使用cAPI Joomla Rest API http://getcapi.org。免责声明:我开发了它。

如您所见,可以查询RESTful JSON API并直接在网页上(所有客户端,在浏览器中)输出内容。上面的示例甚至通过标头传递令牌来验证对受限页面的访问。