Javascript 함수 내에서 PHP변수에 javascript 변수 전달하는 방법
본문
Javadscript 내에서 PHP 변수인 $group12 에 Javascript 변수인 gr1 의 내용을 전달하고 싶습니다.
전체의 소스에서는 첫번째 selected value에 따라 2번째 select를 구성하는 부분은 잘 되고 있으나
choice_group() 함수는 별도로 ajax로 동작되는 부분의 일부입니다.
아래의 소스는 첫번째 select 의 selected value 인 gr1을 받아서 mysql 에 변수로 전달하는 내용입니다.
PHP 내에서 Javadscript 변수의 사용은 구글링으로 $group12 = " <script>document.write (gr1);</script> "; 로 찾아 적용해 보았으나
Javadscript 함수 내에서 <script></script> 를 중복 사용하게 되는 오류나 나는 군요.
이런 경우의 해결 방법은 없나요?
<
select
name
=
"grouping2"
id
=
"grouping2"
>
</
select
>
<
script
type
=
"text/javascript"
>
function sel_group2(gr1) {
<?
php
// $group12 = " <script>document.write (gr1);</
script
> ";
$result = mysqli_query($connect,"SELECT grouping2 FROM `$sel_group` WHERE grouping1='$group12' ORDER BY grouping2") OR die(mysqli_error($connect));
$total = mysqli_num_rows($result);
$total = $total + 1;
echo " document.ad_data.grouping2.length = $total; ";
$i = 1;
while($data = mysqli_fetch_object($result)) {
print("
document.ad_data.grouping2.options[$i].text = '$data->grouping2';
document.ad_data.grouping2.options[$i].value = '$data->grouping2';
");
$i++;
}
?>
}
function choice_group(gr1) {
// process...
sel_group2(gr1);
// process...
}
</
script
>
답변 1
처음 시작하면 흔히 하는 실수입니다.
이에 왜 문제가 되냐 하면은
php 코드가 실행되고 최종으로 html 코드를 보여줍니다. php가 이미 실행이 끝났다는 의미입니다.
그래서 반대로 js함수를 호출한다고 해서 php코드가 실행할 수 없다는 의미입니다.
sel_group2() 실행하기 이전에 php가 실행되어서 document.ad_data.grouping2.option... 코드를 이미 생산했다는 말입니다.
소스 보기를 해보시면 구분이 가실겁니다.
이걸 해결하는 방법은
1 js에 사용될 값을 디비에서 미리 가져와서 js 배열에 담은 후 js를 통하여 필요한 값만 취하면 됩니다.
2 1번 데이터가 너무 크거나 다른 데이터를 보여주면 안된다면 ajax를 통신하는 추가 php파일을 제작해야 합니다.