2015-04-05 205 views
0

我知道至少有100页关于这个问题,我确实尝试了很多,但仍然没有运气。将PHP数组传递给js变量

这可能是一件非常愚蠢的事情,我可能会错过某些地方,但如果有人能帮助我,我会很感激。

这是PHP代码:

<?php 

    $std_res = array(); 
    $thumb_res = array(); 

    $hashtag = $_GET['hashtag']; 

    if ($hashtag != "") 
     get_hashtag($hashtag); 

    function get_hashtag($hashtag){ 
      $access_token = ACCESS_TOKEN; 
      $instagram = new Instagram(INSTA_CLIENT_ID, INSTA_CLIENT_SECRET, $access_token); 
      try { 
       $feed = $instagram->get('tags/'.$hashtag.'/media/recent'); 
      }catch(InstagramApiError $e) { 
       die($e->getMessage()); 
      } 

      $counter = 0; 
      //$std_res = array(); 
      //$thumb_res = array(); 
      foreach($feed->data as $item){ 
       $std_res[$counter] = $item->images->standard_resolution->url; 
       $thumb_res[$counter] = $item->images->thumbnail->url; 
       $counter++; 
      } 
      print_r ($std_res); 
      //echo "<script> trial(); </script>"; 
     } 

?> 

然后在JavaScript中我试图访问的$内容std_res

<script type="text/javascript"> 
     //public function trial(){ 
      var std_resol = <?php echo htmlspecialchars(json_encode($std_res), ENT_NOQUOTES); ?>; 
      //var std_resol = <?php echo json_encode($std_res); ?>; 
      //var std_resol = <?php echo '["' . implode('", "', $std_res) . '"]' ?>; 
      for(var i=0;i<20;i++){ 
       alert(std_resol[i]); 
      } 
      <!-- 
       //var viewer = new PhotoViewer(); 
       //viewer.add('images/1.jpg'); 
       //viewer.add('images/2.jpg'); 
       //viewer.add('images/3.jpg'); 
      //--> 
     //} 
    </script> 

我已经试过很多方法试图访问数组中的JavaScript,它始终引发未定义的警报。

这是结果在$ std_res一个例子:

Array 
(
    [0] => https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11098632_1592161574372304_946830181_n.jpg 
    [1] => https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11137792_375372262654484_983054129_n.jpg 
) 
+0

会是一个什么样的数据在'的print_r($ std_res); '? – 2015-04-05 12:56:39

+0

与PHP的文件是否在同一个文件中?你有没有试过'console.log(std_resol);'看数据是如何设置的? – 2015-04-05 12:58:01

+0

@Testing:我已经添加了一个例子。 – 2015-04-05 12:59:21

回答

1

您正在寻找这样的事情:

<?php 
    $std_res = array(); 
    $thumb_res = array(); 

    $hashtag = $_GET['hashtag']; 

    if ($hashtag != "") 
     get_hashtag($hashtag); 

    function get_hashtag($hashtag){ 
      $access_token = ACCESS_TOKEN; 
      $instagram = new Instagram(INSTA_CLIENT_ID, INSTA_CLIENT_SECRET, $access_token); 
      try { 
       $feed = $instagram->get('tags/'.$hashtag.'/media/recent'); 
      }catch(InstagramApiError $e) { 
       die($e->getMessage()); 
      } 

      $counter = 0; 
      //$std_res = array(); 
      //$thumb_res = array(); 
      foreach($feed->data as $item){ 
       $std_res[$counter] = $item->images->standard_resolution->url; 
       $thumb_res[$counter] = $item->images->thumbnail->url; 
       $counter++; 
      } 

      $std_res = array(
        0 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11055580_727474890707390_1934245715_n.jpg", 
        1 => "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-15/e15/11111531_372354296294035_723344480_n.jpg", 
        2 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11098632_1592161574372304_946830181_n.jpg", 
        3 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11137792_375372262654484_983054129_n.jpg", 
        4 => "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-15/e15/11116667_1565277043745270_1469416835_n.jpg", 
        5 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11015580_893395314058707_653192214_n.jpg", 
        6 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11085153_1564735420461543_1794751821_n.jpg", 
        7 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11111394_486476084853947_1828992005_n.jpg", 
        8 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11123773_1604640419822229_54424738_n.jpg", 
        9 => "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-15/e15/11117138_1586126428339275_1273079713_n.jpg", 
        10 => "https://scontent.cdninstagram.com/hphotos-xfp1/t51.2885-15/e15/10809595_749490181832280_1688748735_n.jpg", 
        11 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11085015_822598601166812_226286803_n.jpg", 
        12 => "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-15/e15/11015600_606519929483157_1838052366_n.jpg", 
        13 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11084823_781169181966563_782497156_n.jpg", 
        14 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11137893_702739529837518_1586561101_n.jpg", 
        15 => "https://scontent.cdninstagram.com/hphotos-xpa1/t51.2885-15/e15/10731578_859809880731769_652613025_n.jpg", 
        16 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11055988_1600208130226646_618821130_n.jpg", 
        17 => "https://scontent.cdninstagram.com/hphotos-xaf1/t51.2885-15/e15/11116893_1568124210107697_1675930404_n.jpg", 
        18 => "https://scontent.cdninstagram.com/hphotos-xfa1/t51.2885-15/e15/11098688_1573534352884643_128369426_n.jpg", 
        19 => "https://scontent.cdninstagram.com/hphotos-xfp1/t51.2885-15/e15/1661965_361029627440040_1980925925_n.jpg" 
    ); 
    } 
?> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
<script type="text/javascript"> 
     var std_resol = <?php echo json_encode($std_res); ?>; 
     for(var i=0;i<std_resol.length;i++){ 
      console.log(std_resol[i]); 
     } 
</script> 
+0

是的,就像这样,但问题是如果数组是由for循环构建的,那么javascript就不会收到任何东西,我试着将一个预定义的数组传递给javascript,它工作得很好。我无法理解我的代码有什么问题。 – 2015-04-05 13:31:28

+0

'for loop'是什么意思? 'JS for loop'或'PHP for loop'?根据你提出的问题和问题,它在我身边工作100%。请问你还需要什么? – 2015-04-05 13:34:06

+0

PHP for循环,如果我使用for循环在PHP数组($ std_res)中添加值,它在JS中工作。但是,如果我像您所做的那样手动分配PHP数组中的值,则它可以正常工作。 – 2015-04-05 13:38:04