Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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
Javascript 使用服务器端代码从客户端提供的不可靠API获取JSON输出,并以适当的格式呈现页面上的数据_Javascript_Php_Json_Ajax_Api - Fatal编程技术网

Javascript 使用服务器端代码从客户端提供的不可靠API获取JSON输出,并以适当的格式呈现页面上的数据

Javascript 使用服务器端代码从客户端提供的不可靠API获取JSON输出,并以适当的格式呈现页面上的数据,javascript,php,json,ajax,api,Javascript,Php,Json,Ajax,Api,所以我遇到了这种情况,有人能建议如何处理它吗 使用服务器端代码从不可靠的API获取JSON输出 由客户端提供,并以适当的方式呈现页面上的数据 格式 给定的API URL返回表示 一组网站在谷歌排名中30年的表现 天 客户端的API URL为: 但是,客户端不希望API端点暴露在 公共互联网。API也很慢而且非常不可靠,因此您无法 只需直接使用JavaScript获取API数据。你需要使用 某种服务器端代码,用于首先获取页面的API数据。 API非常慢,有时会与503一起失败 HTTP状态和空正

所以我遇到了这种情况,有人能建议如何处理它吗

使用服务器端代码从不可靠的API获取JSON输出 由客户端提供,并以适当的方式呈现页面上的数据 格式

给定的API URL返回表示 一组网站在谷歌排名中30年的表现 天

客户端的API URL为:

但是,客户端不希望API端点暴露在 公共互联网。API也很慢而且非常不可靠,因此您无法 只需直接使用JavaScript获取API数据。你需要使用 某种服务器端代码,用于首先获取页面的API数据。 API非常慢,有时会与503一起失败 HTTP状态和空正文,因此您的代码应该实现一些 缓存或数据库的类型以及重试失败请求的逻辑。对于 此测试返回的实际数据永远不会更改,但出于以下目的 对于缓存失效,您可以假定数据通常会更改 每24小时一次

您可以使用相同的后端输出页面/前端代码 脚本,直接将API的输出包含在源代码中,或者 打印/代理JSON并在单独的前端使用AJAX获取数据 结束代码-你觉得最舒服的事情

我试图用php获取数据,所以原始API隐藏起来,然后使用angularjs获取数据

这将是我获取数据的php

<!DOCTYPE html>
<html>
<body>
<?php

$homepage = file_get_contents('https://tools.ayima.com/techtest/api/marketintel');
echo htmlentities($homepage)
?>

</body>
</html>

这将是angularjs的一部分

<!DOCTYPE html>
<html>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="customersCtrl"> 

<ul>
  <li ng-repeat="x in ayima">
    <p>{{ x.domain }}</p>
  </li>
</ul>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
  $http.get("http://94.136.40.103/~boyisbadnews.com/test/marketintel.php")
  .success(function (response) {$scope.ayima = response.marketIntel;})
  .error(function(data, status, headers, config) {
      // something went wrong
    });
});
</script>

</body>
</html>

  • {x.domain}

var-app=angular.module('myApp',[]); app.controller('customersCtrl',函数($scope,$http){ $http.get(“http://94.136.40.103/~boyisbadnews.com/test/marketintel.php) .success(函数(响应){$scope.ayima=response.marketIntel;}) .error(函数(数据、状态、标题、配置){ //出了点问题 }); });
但是无法使其工作。

获取服务器数据的php文件(marketintel.php)必须是:

PHP文件:

<?php
    header("Content-Type: application/json");
    header("Cache-Control: no-cache");

    $homepage = file_get_contents('https://tools.ayima.com/techtest/api/marketintel');
    echo $homepage;
?>

HTML文件: 我看到您的标记中有一些小错误。这里有一个合适的html


页面标题
  • {x.domain}

var-app=angular.module('myApp',[]); app.controller('customersCtrl',函数($scope,$http){ $http.get(“http://dfjb.webcindario.com/dataAyima.php)成功(功能(响应){ $scope.ayima=response.marketIntel; }) .error(函数(数据、状态、标题、配置){ //出了点问题 }); });
那么您想让我们为给定的规范编写代码??或者你想尝试什么吗?我想做的是使用php获取数据,这样原始API就不会公开,那么你在哪里失败了??你有什么错误吗??你需要分享你的代码!然后使用angularjs使用它,但不起作用。是我自己,还是问题的语言听起来像是编程竞赛中的规范?不确定为什么我得不到与您相同的结果我的php文件是:echo$homepage;return$主页不工作。我可以看到Danny的代码正在运行,但我从服务器收到错误消息。但是html文件也没有得到任何结果。嗯,您的php文件的头()前面似乎有字符;语法。您如何整理503 HTTP状态的日期和消息