Php DOM不';不要重播?

Php DOM不';不要重播?,php,facebook,function,Php,Facebook,Function,我正在与facebook api通信以获取用户页面,一旦我完成了整个过程,我的html就不会重新呈现用户选择的可用页面。因此,一旦oauth过程完成,我将获取页面并调用呈现HTML的函数——然而,HTML仅在页面刷新时更改。这是我的代码: function renderSocialPage($provider = null) { if (!empty($provider)) { $tab = $provider; } else { $tab = '

我正在与facebook api通信以获取用户页面,一旦我完成了整个过程,我的html就不会重新呈现用户选择的可用页面。因此,一旦oauth过程完成,我将获取页面并调用呈现HTML的函数——然而,HTML仅在页面刷新时更改。这是我的代码:

function renderSocialPage($provider = null)
{
    if (!empty($provider)) {
        $tab = $provider;
    } else {
        $tab = 'facebook';
    }

    $pageData = get_option('page_data');
    echo '<h1>Pages</h1>';

    ?>
    <div class="social-connections-wrapper" data-nav-tabs="">
        <div class="nav-tab-wrapper">
            <a href="#facebook"
               class="nav-tab<?php if ($tab == 'facebook') { ?> nav-tab-active<?php } ?>">Facebook</a>
            <a href="#google" class="nav-tab<?php if ($tab == 'google') { ?> nav-tab-active<?php } ?>">Google My
                Business</a>
        </div>

        <div id="facebook" class="tab-content" style="display:<?php echo $tab == 'facebook' ? 'block' : 'none' ?>;">
            <?php
            if (!empty($pageData)) {
                ?>
                <p>Connected pages:</p>
                <ul>
                    <?php
                    foreach ($pageData as $data) {
                        ?>
                        <li> <?= $data['name'] ?></li>
                        <?php
                    }
                    ?>
                </ul>

                <a href="#" id="facebook-connect-btn">Reconnect to facebook.</a>
                <?php
            } else {
                ?>
                <p>Connect your social accounts.</p>

                <a href="#" id="facebook-connect-btn">Connect to facebook</a>
                <?php
            }
            ?>
        </div>
    </div>
    <?php
}

function gcConnectReviews()
{
    $provider     = $_POST['provider'];
    $access_token = $_POST['accToken'];

    if ($provider === 'facebook') {
        $response  = wp_remote_get('https://graph.facebook.com/v5.0/me/accounts?access_token='.$access_token);
        $data      = json_decode($response['body']);
        $page_data = $data->data;

        $fb_rev_data = [];

        foreach ($page_data as $data) {
            $fb_rev_data [] = [
                'id'           => $data->id,
                'name'         => $data->name,
                'access_token' => $data->access_token
            ];
        }

        add_option('page_data', '', '', 'yes');
        update_option('page_data', $fb_rev_data);
    } elseif ($provider === 'google') {
        // ... 
    }

    // so once I call this function, it should do render html with connected pages, 
    // but it does it only on refresh
    $this->renderSocialPage($provider);
}
函数renderSocialPage($provider=null)
{
如果(!空($provider)){
$tab=$provider;
}否则{
$tab='facebook';
}
$pageData=get_选项(“页面数据”);
呼应“页面”;
?>


连接您的社交帐户


可能是WordPress内部缓存当前脚本实例的此类选项值的问题,我想?在
gcConnectReviews
中,您已经在
$fb_rev_data
中获得了数据,因此您可以将其作为一个额外的可选参数传递给
renderSocialPage
方法,并仅从optio页面读取ns,如果没有为该附加参数传递任何信息。@misorude$fb_rev_数据总是会发生变化,在调试器中,一切都会顺利进行,唯一的问题是更新HTML。我尝试在函数中传递与$provider相同的fb_rev_数据,但没有任何变化,它的工作原理是相同的。HTML“不更新”如果数据确实更新了,这是不可能的。所以它可能没有更新。你在哪里/什么时候调用
gcConnectReviews
?@misorude我认为这可能是一个奇怪的错误,但它发生了。例如:我选择了3个页面,$page\u数据有3个元素,我调用renderSocialPage()函数,在我选择2个页面后,$page\u数据正确更新并调用相同的函数并通过foreach循环,但是HTML没有更新。gcConnectReviews是在我的JS文件“我选择3个页面,$page\u数据有3个元素”中完成ajax请求后调用的-具体位置?在您的
gcConnectReviews
中,根据API调用填充该数组的位置?这里有趣的部分是,当您在另一个函数中执行
$pageData=get_选项('page_data');