php - 页面加载后如何从 PHP 加载数据
问题描述
这是我的仪表板。
我正在使用 API 向此页面获取数据。这是此页面的一小部分,需要很长时间才能加载。
通过 API 加载所有数据需要 10 秒。
函数本身看起来像这样
$YMAPIusers = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits,ym:s:newUsers,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds,ym:s:sumGoalReachesAny', $dimensionsYMAPI = null, 'today', 'today');
$YMAPIpages = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:pv:pageviews,ym:pv:users', 'ym:pv:URLHash', 'today', 'today');
$YMAPIvisits = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits', 'ym:s:searchPhrase', 'today', 'today');
$YMAPIuserdata = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:pv:users', 'ym:pv:deviceCategory', 'today', 'today');
$YMAPI_user_age = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits', 'ym:s:ageInterval', 'today', 'today');
$YMAPI_source = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits', 'ym:s:lastsignTrafficSource', 'today', 'today');
这样我将数据插入页面
<?= $YMAPIusers['totals'][0][0] ?>
你能告诉我如何先加载页面,然后动态加载数据吗?请根据我的例子
我试过这个
<script>
window.onload = function() {
$.ajax(
{
type:'GET',
url:'/main/index.php',
data:"YMAPI_call=true",
success: function(data){
alert('successful');
}
});
};
和
if(isset($_GET['YMAPI_call'])){
$YMAPIusers = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits,ym:s:newUsers,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds,ym:s:sumGoalReachesAny', $dimensionsYMAPI = null, 'today', 'today');
$YMAPIpages = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:pv:pageviews,ym:pv:users', 'ym:pv:URLHash', 'today', 'today');
$YMAPIvisits = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits', 'ym:s:searchPhrase', 'today', 'today');
$YMAPIuserdata = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:pv:users', 'ym:pv:deviceCategory', 'today', 'today');
$YMAPI_user_age = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits', 'ym:s:ageInterval', 'today', 'today');
$YMAPI_source = YMAPI($countersYMAPI[0], $tokenYMAPI, 'ym:s:visits', 'ym:s:lastsignTrafficSource', 'today', 'today');
}
和
<?= isset($YMAPIusers['totals'][0][0]) ?>
我在网上找到了这个解决方案,但对我没有任何帮助
我的 php api 调用
function YMAPI($countersYMAPI, $tokenYMAPI, $metricsYMAPI, $dimensionsYMAPI = null ,$date1YMAPI, $date2YMAPI){
$params = array(
'ids' => "$countersYMAPI[counter]",
'metrics' => $metricsYMAPI,
'dimensions' => $dimensionsYMAPI,
'date1' => $date1YMAPI,
'date2' => $date2YMAPI,
);
$ch = curl_init('https://api-metrika.yandex.net/stat/v1/data/bytime?' . urldecode(http_build_query($params)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $tokenYMAPI));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
global $resYMAPI;
$resYMAPI = curl_exec($ch);
curl_close($ch);
$resYMAPI = json_decode($resYMAPI, true);
return $resYMAPI;
}
我如何在 JS 中做到这一点并将数据插入我的页面?
解决方案
也许有人会需要它。
使用 JS 连接到 Yandex Metrics API
我决定通过 Fetch() 连接到 API。
下面带有标题的示例
async function API_get_data() {
let API_data = await fetch(
'https://api-metrika.yandex.net/stat/v1/data/bytime?ids={id-counter}&metrics={metrics}&dimensions={dimensions}&date1={date1}&date2={date2}',
{
headers: {
"Authorization": "OAuth {your-token}"
}
}
)
}
推荐阅读
- python - 具有多处理功能的 pyserial 给了我一个 ctype 错误
- java - 如何在 JUnit 测试中的不同线程中启动 Main.main()
- javascript - 如何使用 Open Weather Map 实现基于地理位置的天气预报?
- python-3.x - 查找数组的每个元素与另一个数组的相对比例
- angular-reactive-forms - 以角度 8 发布其名称的 csv 文件
- google-drive-api - 如何在我的 mongodb 和 Google 电子表格之间同步?
- android - Android Studio 3.5 打不开以前版本的项目
- android - Android - 底部的按钮行消失(不在设计器中)
- laravel - Laravel Eloquent 关系 belongsTo 返回当前表而不是连接表
- vulkan - vkCreateDebugReportCallbackEXT vs vkCreateDebugUtilsMessengerEXT