Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP转换为Ajax_Php_Jquery_Ajax_Api_Asynchronous - Fatal编程技术网

将PHP转换为Ajax

将PHP转换为Ajax,php,jquery,ajax,api,asynchronous,Php,Jquery,Ajax,Api,Asynchronous,我对编码还不熟悉,当我创建以下PHP代码时,我感到非常自豪。使用TwitchTV的API,我可以显示有人在TwitchTV上玩的游戏。它起作用了 $info = "https://api.twitch.tv/kraken/channels/celgaming"; $json = json_decode(file_get_contents($info), true); $thegame = $json['game']; echo $thegame; 但我计划缓存这段代码所在的页面,并意识到

我对编码还不熟悉,当我创建以下PHP代码时,我感到非常自豪。使用TwitchTV的API,我可以显示有人在TwitchTV上玩的游戏。它起作用了

$info = "https://api.twitch.tv/kraken/channels/celgaming";   
$json = json_decode(file_get_contents($info), true);
$thegame = $json['game'];
echo $thegame;

但我计划缓存这段代码所在的页面,并意识到它不会工作,因为PHP是服务器端的。如何将这段代码转换为Ajax或其他异步方法来处理页面缓存?

我不会为您编写javascript,您应该先自己尝试,但可以提出其他解决方案来解决您的主要目标(缓存):

  • 您可以使用数据库(例如MySQL)而不是客户端缓存。只需将TwitchTV查询的结果和过期日期一起存储在数据库中,并在向TwitchTV发送另一个请求之前进行检查
  • 您可以通过PHP发送
    HTTP缓存控制头
    ,也可以将其包含在HTML代码中。有关说明,请参阅此问题:。他们建议客户端在到期日之前不要查询服务器

我不确定异步调用是否是您所需要的,但我会先尝试一下。 这里不是一个真正的答案,但希望有一些指向它的指针:

试图对“”进行Ajax调用 并偶然发现了“同一域策略”问题。请参阅下面的链接

[Ajax跨域问题的解决方案][1]

我在[1]上试过这个:


它起作用了。也许你应该扫描API文档,寻找另一种获取所需数据的方法。

在我的洋葱中,你的要求太高了。您要求人们编写程序的一部分,而不是在某个方面进行修复/帮助,这正是如此。通常,人们会使用JavaScript框架(如jQuery)来实现AJAX。使用它,您将包含HTML标记,然后查看用于AJAX的jQuery文档:是的,没有多少人会接受这个问题。请先查看文档,如果需要帮助,请与我们联系。目前,您似乎还没有放下工作。您可能遇到的另一个问题是,您将无法运行传统的AJAX查询,因为您没有请求同一域上的数据。此外,就缓存而言,我并不完全相信AJAX对PHP的帮助有多大?@SnakeFast他只需要XMLHTTPRequest for IE=>10和其他浏览器,XDomainRequest for IE8/IE9来执行CORS请求。
$.getJSON("https://api.twitch.tv/kraken/search/games?q=star&type=suggest&callback=?", function (data) {
            $.each(data.games, function (index, item) {
               console.log(index, item);
            });
        });