我第一次使用API。使用cURL,我可以从API获取一个令牌,并使用它来获取JSON格式的文本中的响应。这是我的代码:
<?php
$host = 'HOST';
$username = 'USERNAME';
$password = 'PASSWORD';
$payloadName = 'grant_type=client_credentials';
$process = curl_init($host);
curl_setopt($process, CURLOPT_HTTPHEADER, array('application/x-www-form-urlencoded'));
curl_setopt($process, CURLOPT_HEADER, 1);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($process, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_POSTFIELDS, $payloadName);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($process);
$str = ''.$return.'';
$start = strpos($str, '{');
$end = strpos($str, '}', $start - 1);
$length = $end - $start;
$json = substr($str, $start - 1, $length + 2);
$results = json_decode($json, true);
$token = $results['access_token'];
$type = $results['token_type'];
$curl = curl_init( "API URL?fields=title,author" );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $token) );
$return2 = curl_exec( $curl );
?>
我的问题是解码令牌的JSON似乎工作正常,但$ return2的值只是“1”或“真”,所以如果我使用相同的方法则无法解析。
这是输出文本结果,例如:
{“id”:xxxxxx,“title”:“战狗”,“作者”:“熊,格雷格,1951年 - ”}
到网页,那么如何捕获输出到我可以使用的变量(服务器端或客户端?)?
答案 0 :(得分:1)
JSON是一种原生的Javascript表示法。事实上,它代表&#34; JavaScript Object Notation&#34;。例如,
var jsonobj = {"id":123456,"title":"War dogs","author":"Bear, Greg, 1951-"};
是有效的JS。它会产生一个你可以使用的对象。
alert(jsonobj.title); //alerts "War Dogs"
如何获得变量集,我不确定基于您的示例。如果变量$json
在PHP文件的HTML部分中可用,则可以在<script>
部分中执行以下操作:
var jsonobj = <?php echo $json; ?>;