2017-06-06 14 views
1

私はこの問題は、私の問題に適用することができる解決策を見つけることができませんが、StackOverflowで多くの質問を知っている。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()を呼び出して、ビューの数画像の

(これは変数$block内の文字列形式のままである)私は、Ajaxを使用してみましたが、それは私にはかなり新しいですので、私は愚かなミスをやっていることがあります。

$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

があるために - そしてバックエンドは、PHPの部分であるエンドポイントでJSONを取得します。そうすれば、このような複雑な混乱にならないでしょう。おとぎ話をして申し訳ありません。 –

答えて

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 !

。エコー追加:それはすでに有効なJavaScriptオブジェクトであるため、他の回答に

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

と逆に、JSON.parseこれにしようとしないでください。

編集:あなたは、応答文字列にJSONを連結しようとしているならば、<?phpタグを使用しない、代わりにあなたが行うことができます。フロントをseperatingについて考えてください:それは*男は*

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

あなたの答えをありがとう!私はまだエラーが発生します: 'SyntaxError:expected expression、got '<''。コードを

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文字列を配列/オブジェクトに変換することができます。

これですべての作業が完了すると、PHP配列からデータが提供されたJavaScript配列が作成されます。

あなたが echo結果がなかったので、あなたは、単にJSONプロセスを実行し、その結果を破棄している動作しません
関連する問題