首页 > 解决方案 > 页面加载后如何从 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 中做到这一点并将数据插入我的页面?

标签: php

解决方案


也许有人会需要它。

使用 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}"
               } 
          }
     )
 }

推荐阅读