2017-06-06 102 views
1

我知道這個問題已經被問在計算器上裏面很多,但我找不到可以應用到我的問題的任何解決方案。傳遞PHP數組到一個JavaScript數組PHP函數

我的工作是重新組合的所有視頻和我公司的圖片在一個平臺上(我收回我的前同事後的項目),我的問題是在顯示圖片的燈箱。

我有一個返回HTML/CSS/JavaScript的字符串格式像這樣的PHP函數:

$block = '<div id="myModal" class="modal" style="margin:auto">' 
      .'<span style="float:right;margin-right:33px"><a href="'.HTTP_IHM_PATH.'Suppression.php?id='.$records[$i]['Access_Key'].'" onclick="return confirm(\'Êtes-vous sûr de vouloir continuer cette suppression ? Elle sera définitive.\');"><img src="'.HTTP_IMG_PATH.'corbeille.jpg" style="width:20px;height:auto;"></a></span>' 
      .'<span class="close cursor" onclick="closeModal()" style="color:#585858; font-size:60px;float:right;">&times;</span>' 
[...] 
return $block; 

我這樣調用該函數:<?php echo function() ?>

在這裏,我有一個PHP數組$records其中包含我想要在LightBox中顯示的圖片的所有信息,稍後我希望在我的代碼中將這些信息用於我的JavaScript功能。

我聽說,我可以用<script>var records = <?php json_encode($records) ?></script> JavaScript中的數組轉換,但它不工作!

最後我想要做的是當用戶點擊一張圖片時,它打開我的LightBox併爲他正在看的每一張圖片,我想調用我的php函數UpdateViews(),它將視圖數加1的圖片。

我嘗試使用Ajax,但因爲它是相當新的給我,我可能會做愚蠢的錯誤(這仍是字符串格式的變量$block):已經用我的前同事:

$block .= '//getSlideIndex returns slideIndex wich is the id of the <img/> 
$(\'#\' + getSlideIndex()).on(\'click\', function(){ 
        alert("Ok onclick" + records[getSlideIndex()]["Access_Key"]; 
        //"Access_Key" is the property I need (primary key of the table) 
        $.ajax({ 
         type:\'GET\', 
         url: \'/picture.php\', 
         data: {id=\' + records[getSlideIndex()]["Access_Key"] + \'}, 
         success: function(data){ 
          alert(\'success\' + data); 
         }, 
         error: function(exception){ 
          alert(\'Exception: \' + exception); 
         } 
        }); 
        e.preventDefault(); 
       });'; 

注意他的代碼中有一些Ajax,所以當我在這個頁面上時,已經設置了$_GET:在這種情況下,我能否使我的ajax工作?

謝謝你,如果你讀到這一點,我希望你能幫助我走上正確的軌道。

+0

要* *那個傢伙:請想想前分隔條件 - 和後端,獲取您的JSON與一個端點,這是PHP的一部分。這樣,它不會像這樣變成一個複雜的混亂。抱歉迂腐。 –

回答

3

I've heard that I can translate the array in javascript by using <script>var records = <?php json_encode($records) ?></script> but it doesn't work !

,因爲你沒有echo結果,你只需運行JSON過程,然後丟棄的結果是行不通。添加回聲:

<script>var records = <?php echo json_encode($records) ?></script> 

,違反了對方的回答,不要試圖JSON.parse這是因爲它已經是一個有效的JavaScript對象。

編輯:如果你想以連接JSON的響應字符串,則不要使用<?php標籤,相反,你可以這樣做:

$block .= '<script>var records = ' . json_encode($records) . '; </script>'; 
+0

感謝您的回答!我仍然得到一個錯誤:'SyntaxError:期望的表達式,得到'<''。我如何使代碼以

0

I've heard that I can translate the array in javascript by using <script>var records = <?php json_encode($records) ?></script> but it doesn't work !

這非常接近。這將使一個JavaScript 變量這是一個JSON string。然後,您可以使用JavaScript的JSON parse將該JSON字符串轉換回數組/對象。

一旦完成了所有這些,您將擁有一個JavaScript數組,其中包含從PHP數組提供的數據。