PHP w JavaScript

0

Witam,
Mam problem z przekazaniem tablicy z php do js. Skrypt ma przeszukiwać tablicę $_POST i jeśli natrafi na odpowiednie pole to zapisuje wartoś do tablicy JS.

<script type="text/javascript">
var spec_array=new Array();
var por_array=new Array();
<?
if($_POST['zmien']){
    foreach($_POST as $k => $v){
			if(substr($k, 0, 14) == "specjalizacja_") {
			echo "spec_array['".substr($k, 14, 1)."']=".$v.";";
			}
			if(substr($k, 0, 9) == "poradnia_") echo "por_array['".substr($k, 9, 1)."']=".$v.";";
		}
		}
?>
(...)

nie wiem o co chodzi, ale to nie działa. Jeśli wyrzucę skrypt php poza <script></script> to działa. Może jest jakiś łatwiejszy sposób na zrobienie tego?

0
<script type="text/javascript"> var spec_array=new Array(); var por_array=new Array(); <?php //<- o tym nie zapomniałeś? :> if($_POST['zmien']){
0

nie, nie, przeoczyłem przy wklejaniu kodu ;-)

0

To wrzuć to w zawartość echo:

<?php
echo('<script type="text/javascript">
var spec_array=new Array();
var por_array=new Array();');
if($_POST['zmien']){
[...]
0

bez zmian, wygląda na to, że skrypt przestaje działać po tej linii:

echo "spec_array['".(substr($k, 14, 1))."']=".$v.";";

Jak zwykle w takich sytuacjach banał, brak apostrofów przy $v

echo "spec_array['".(substr($k, 14, 1))."']='".$v."';";
0
korys napisał(a)

Witam,
Mam problem z przekazaniem tablicy z php do js.

Wykorzystaj to ze PHP ma wbudowana funkcje do konwersji tablic/obiektow do JSON. A ze JSON to notacja JavaScriptowa to bez problemu mozna to zrobic tak:

Ja robiac cos takiego, przeslal bym cala tablice do JS.

echo('var _POST = {'.json_encode($_POST).'};');

I tyle. Sprawdzanie prefiksow robisz po strnie JS.

if($_POST['zmien']){
    foreach($_POST as $k => $v){
			if(substr($k, 0, 14) == "specjalizacja_") {
			echo "spec_array['".substr($k, 14, 1)."']=".$v.";";
			}
			if(substr($k, 0, 9) == "poradnia_") echo "por_array['".substr($k, 9, 1)."']=".$v.";";
		}
		}
?>
(...)

Udziwnione.

if ($_POST['zmien']) {
  $arrays=array();
  foreach ($_POST as $k=>$v) {
    $x=explode('_',$k);
    $arrays[$x[0]][$x[1]]=$v;
  }
  echo('var _POST = {'.json_encode($arrays).'};');
}

Tak lepiej :)

Bedziesz mial tablice w postaci _POST['specjalizacja']['xyz'].

A po stronie skryptu sprawdzasz prefiksy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1