使用 PHP 从 Vine API 获取 JSON 并使用 Jquery Ajax 调用它
Get JSON from Vine API with PHP and call it with Jquery Ajax
我正在尝试根据某个用户的时间线构建一个 Vine 视频源。因为 Vine 不提供 API,我使用的是非官方的 Vine API,效果很好!
以下 URL 例如,returns 一个 JSON 来自给定 Vine 频道的最新视频。 https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100
据我所知(如果我错了请纠正我)是否无法通过 Jquery Ajax/getJSON 调用直接访问此 JSON。
因此,我将 PHP 与 Cronjob 结合使用,每天从 URL 中获取一次 JSON 并将其保存在 JSON 文件在我自己的服务器上。我可以访问 Jquery Ajax 保存的 JSON 文件。
这就是我现在拥有的:
PHP:
<?php
file_put_contents("sbxvine.json", fopen("https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100", 'r'));
?>
Jquery:
$(function(){
$.getJSON( "sbxvine.json", function( data ) {
var getvines = data.data.records;
for(var i = 0; i < getvines.length; i++){
$('.vinefeed').append('<div class="item"><div class="content"><video width="100%" height="100%" src="' + getvines[i].videoUrl + '" poster="'+ getvines[i].thumbnailUrl+'" loop controls preload="none"></video></div></div>')
}
});
});
现在的问题是,我不知道用户每天什么时候上传新内容,也就是说,提要与 Vine 频道不同步。每 5 分钟执行一次 Cronjob 并不是我想要的。
所以我需要的是摆脱所有 Cronjob 的东西,并在 Ajax 调用请求时从 URL 获取 JSON 直播。
为此,我尝试这样做:
PHP:
<?php
header('Access-Control-Allow-Origin: *');
$json = file_get_contents('https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100');
$obj = json_decode($json,true);
echo $obj;
?>
然后,Jquery:
$(function(){
$.ajax({
url: 'getvines.php',
dataType: 'json',
type: 'GET',
success: function(data) {
console.log(data);
},
error: function(){
console.log("nope");
}
});
});
不幸的是,这不起作用,我不确定我做错了什么。它会在一两秒后记录 "nope"。
或者是否有完全不同的解决方案以更好的方式完成这一切?
啊愚蠢的错误,我只需要从 php 中删除 json_decode
因为 URL 已经 returns JSON 的正确格式Ajax 电话。
只是一个附加问题:这是构建此 Feed 的好方法吗?缺点是什么?可以提出哪些建议来增强它(例如使其尽可能快或 "best practise" 选项)?
我正在尝试根据某个用户的时间线构建一个 Vine 视频源。因为 Vine 不提供 API,我使用的是非官方的 Vine API,效果很好!
以下 URL 例如,returns 一个 JSON 来自给定 Vine 频道的最新视频。 https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100
据我所知(如果我错了请纠正我)是否无法通过 Jquery Ajax/getJSON 调用直接访问此 JSON。
因此,我将 PHP 与 Cronjob 结合使用,每天从 URL 中获取一次 JSON 并将其保存在 JSON 文件在我自己的服务器上。我可以访问 Jquery Ajax 保存的 JSON 文件。
这就是我现在拥有的:
PHP:
<?php
file_put_contents("sbxvine.json", fopen("https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100", 'r'));
?>
Jquery:
$(function(){
$.getJSON( "sbxvine.json", function( data ) {
var getvines = data.data.records;
for(var i = 0; i < getvines.length; i++){
$('.vinefeed').append('<div class="item"><div class="content"><video width="100%" height="100%" src="' + getvines[i].videoUrl + '" poster="'+ getvines[i].thumbnailUrl+'" loop controls preload="none"></video></div></div>')
}
});
});
现在的问题是,我不知道用户每天什么时候上传新内容,也就是说,提要与 Vine 频道不同步。每 5 分钟执行一次 Cronjob 并不是我想要的。
所以我需要的是摆脱所有 Cronjob 的东西,并在 Ajax 调用请求时从 URL 获取 JSON 直播。
为此,我尝试这样做:
PHP:
<?php
header('Access-Control-Allow-Origin: *');
$json = file_get_contents('https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100');
$obj = json_decode($json,true);
echo $obj;
?>
然后,Jquery:
$(function(){
$.ajax({
url: 'getvines.php',
dataType: 'json',
type: 'GET',
success: function(data) {
console.log(data);
},
error: function(){
console.log("nope");
}
});
});
不幸的是,这不起作用,我不确定我做错了什么。它会在一两秒后记录 "nope"。
或者是否有完全不同的解决方案以更好的方式完成这一切?
啊愚蠢的错误,我只需要从 php 中删除 json_decode
因为 URL 已经 returns JSON 的正确格式Ajax 电话。
只是一个附加问题:这是构建此 Feed 的好方法吗?缺点是什么?可以提出哪些建议来增强它(例如使其尽可能快或 "best practise" 选项)?