【问题标题】:How to use a javaScript Variable within PHP?如何在 PHP 中使用 javaScript 变量?
【发布时间】:2012-01-23 12:46:14
【问题描述】:

我目前拥有的是一个简单的 Facebook 应用,它从 YouTube 频道中提取了视频信息。

刚才,我将 YouTube 响应的第一个视频连同标题、观看次数和说明一起嵌入到占位符中,所有视频(包括第一个视频)都显示在包含嵌入视频的 div 下方。

然后,当用户点击任何视频缩略图时,该视频就会嵌入到占位符 div 中。

我可以通过在 YouTube 关联数组中硬编码视频的 id 来实现这一点,但我不知道如何在我的 jQuery 代码的最后一行中将 id 变量与 PHP 一起使用。

这是我当前的代码:

$url = 'http://gdata.youtube.com/feeds/api/videos?max-results=20&alt=jsonc&orderby=published&format=5&safeSearch=none&author=CHANNELID&v=2';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $url);
$body = curl_exec($ch);
curl_close($ch);
$data = json_decode($body, true);

?>
<div id="placeholder" style="font-family:Helvetica; max-width:500px; margin:0 0 20px 0;">
<div id="player"><iframe width="480" height="274" src="https://www.youtube.com/embed/<?php echo $data['data']['items'][0]['id']; ?>" frameborder="0" allowfullscreen></iframe></div>
<div class="title" style=" font-size:14px; font-weight:bold; color:#3B5998; margin:2px 0 3px 0;"><?php echo $data['data']['items'][0]['title']; ?> </div>
<div class="views" style="color:#BBB; font-size:12px;"><?php echo $data['data']['items'][0]['viewCount'];?> views</div>
<div class="description" style="font-size:14px;"><?php echo $data['data']['items'][0]['description'];?></div>
<div class="hr" style="padding:5px 0 0 0; float:left; border-bottom: 1px solid #96CC90; width:480px;"></div>
</div>
<?php

foreach($data['data']['items'] as $item) {
$id = $item['id'];
$description = $item['description'];
$description = str_replace('uk.opticalexpress.com', '', $description);
$description = str_replace('-', '', $description);
$description = trim($description);

$thumb = $item['thumbnail']['sqDefault'];

$i = 0;
?>
<div class="video" id="<?php echo $i; ?>" style="font-family:Helvetica; float:left; max-width:150px; min-height:130px; margin:0 0px 20px 10px;">
    <div class="thumb" style="position:relative; left:0; top:0;">
        <img src="<?php echo $item['thumbnail']['sqDefault'];?>" title="<?php echo $description;?>" style="position:relative; top:0; left:0px;"/>
        <img src="../images/play-thumb.png" style="position:absolute; top:30px; left:45px;"/>
    </div>
    <div class="title" style="font-size:14px; font-weight:bold; color:#3B5998; margin:2px 0 3px 0;"><?php echo $item['title']; ?> </div>
    <div class="views" style="font-size:12px;"><?php echo $item['viewCount'];?> views</div>
</div>

<?php
$i++;
}
?>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('.video').click(function() {
        var id = $(this).attr('id');

        $('#placeholder').fadeOut('slow');
        $('#placeholder').html('<div id="player"><iframe width="480" height="274" src="https://www.youtube.com/embed/<?php echo $data['data']['items'][1]['id']; ?>" frameborder="0" allowfullscreen></iframe></div>');
        $('#placeholder').fadeIn('slow');
    });
});
</script>

对不起,文字墙(和内联 css)!

【问题讨论】:

    标签: php jquery youtube-api


    【解决方案1】:

    难...我会用 jQuery 观看 .video 上的点击事件,然后对服务器上的 PHP 文件(RESTish)执行 GET 请求,这将生成 iframe 所需的 HTML,然后设置 #video html 到您刚刚收到的 html。可能会工作...

    另一种可能性,是加载所有 iframe,然后在 .video 上单击仅显示匹配相同唯一 ID 或其他内容的那个。不过,这意味着您的用户需要更多的加载时间,最好使用 AJAX 类型的方法。

    【讨论】:

    • 感谢@MrCarl。我刚刚更新了我的问题。我几乎明白了,我现在需要弄清楚的是如何将id jquery 变量放入数组而不是现在的[1]
    • 如果我理解正确的话,这将被称为关联数组。应该是someArray['thisID']['value']的简单问题
    • 是的,我可以使用 PHP 做到这一点,但如果我使用 jQuery 获取点击视频的 id,我无法弄清楚在从数组中提取数据时如何使用该 id,即['?&gt; + id + &lt;?php]['value']变得一团糟,不知道是否有办法让它发挥作用。
    • 嗯,好吧,所以您不能使用单独的 php 文件来将变量传递给使用 GET/POST 吗? (例如example.com/getiframe.php?id=1)。那么另一个想法就是我猜想用 jQuery 来做所有的事情。将视频的 URL 放入隐藏的 span 标签中,然后单击 .video,从它的 span 中获取 url,并将其设置为 iframe。您可以将其扩展为包含您需要的所有数据的 div,例如 Title 等。Dirty,但它应该可以工作。
    • 使用 ajax 请求让它工作,我花了一段时间才弄清楚它,但最终得到了它。稍后将用我所做的更新我的问题,以防其他人遇到同样的问题。谢谢。
    【解决方案2】:

    你可以通过这样做来使用ajax,我就是这样做的,希望这对你也有用。

    <div id="video1" class=".temp"></div>
    
    <script type="text/javascript">
    
    $(document).ready(function() {
        $('.temp').click(function() {
    
            var currentId = $(this).attr('id');
            showVideo(currentId);
         });
    };
    
    function showVideo(str)
    {
    
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("VideoFrameDiv").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","inc/AjaxOnClickValues.php?id="+str,true);
        xmlhttp.send();
    }
    </script>
    

    【讨论】:

    • 谢谢,这有点帮助,但我想我需要看看 inc/AjaxOnClickValues.php 做了什么。我正在考虑使用 ajax 请求,但后来意识到我想不出一种方法来从数组中提取我需要的东西。会继续努力。
    猜你喜欢
    • 2018-01-30
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 2014-02-09
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多