묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
PHP와 자바스크립트 같이 사용시 컴파일 순서?
2004.01.12 12:42
PHP에서 자바스크립트를 이용해서 코딩을 했습니다.
어떤 에러가 있을시 메세지창을 출력하게 하는 부분을 자바스크립트 앞부분에 넣었는데
정작 실행하면 그 메세지 출력이 두분 뜨더군요.
도무지 원인을 알 수 없어서 이렇게 글을 올립니다.
그래서 자바스크립트 뒷부분에 그 내용을 넣으니 그 현상이 사라지더라구요.
혹시 자바스크립트를 컴파일하면서 파일을 한번 더 읽으면서 실행이 두번되는 것이 아닐까 추측을 하고 있습니다.
아래는 제가 다른 곳에 올렸던 질문에 대한 개괄적인 소스 입니다.
좀 장황하지만 참고해 주세요.^^
<?
if($mode == 'insert') {
echo "
<script language=javascript>
alert('insert');
</script>";
}
else if($mode == 'del') {
echo "
<script language=javascript>
alert('del');
</script>";
}
else {
}
?>
<html>
<head>
<script Language="JavaScript">
...
쏼라쏼라...
...
</script>
</head>
<body>
....
</body>
</html>
위의 형식의 프로그램을 짰습니다.
근데 mode 별 echo안에 메세지 출력하는 부분에서 문제가 생겼습니다.
메세지 출력이 두번 되는 문제인데요.
원인을 찾다가 저 메세지 출력 부분의 위치를 바꾸어 보았습니다.
<?
if($mode == 'insert') {
$notice_type = 'insert';
}
else if($mode == 'del') {
$notice_type = 'del';
}
else {
}
?>
<html>
<head>
<script Language="JavaScript">
...
쏼라쏼라...
...
</script>
<?
if($notice_type == 'insert') {
echo "
<script language=javascript>
alert('insert');
</script>";
}
if($notice_type == 'del') {
echo "
<script language=javascript>
alert('del');
</script>";
}
?>
</head>
<body>
....
</body>
</html>
어떤 에러가 있을시 메세지창을 출력하게 하는 부분을 자바스크립트 앞부분에 넣었는데
정작 실행하면 그 메세지 출력이 두분 뜨더군요.
도무지 원인을 알 수 없어서 이렇게 글을 올립니다.
그래서 자바스크립트 뒷부분에 그 내용을 넣으니 그 현상이 사라지더라구요.
혹시 자바스크립트를 컴파일하면서 파일을 한번 더 읽으면서 실행이 두번되는 것이 아닐까 추측을 하고 있습니다.
아래는 제가 다른 곳에 올렸던 질문에 대한 개괄적인 소스 입니다.
좀 장황하지만 참고해 주세요.^^
<?
if($mode == 'insert') {
echo "
<script language=javascript>
alert('insert');
</script>";
}
else if($mode == 'del') {
echo "
<script language=javascript>
alert('del');
</script>";
}
else {
}
?>
<html>
<head>
<script Language="JavaScript">
...
쏼라쏼라...
...
</script>
</head>
<body>
....
</body>
</html>
위의 형식의 프로그램을 짰습니다.
근데 mode 별 echo안에 메세지 출력하는 부분에서 문제가 생겼습니다.
메세지 출력이 두번 되는 문제인데요.
원인을 찾다가 저 메세지 출력 부분의 위치를 바꾸어 보았습니다.
<?
if($mode == 'insert') {
$notice_type = 'insert';
}
else if($mode == 'del') {
$notice_type = 'del';
}
else {
}
?>
<html>
<head>
<script Language="JavaScript">
...
쏼라쏼라...
...
</script>
<?
if($notice_type == 'insert') {
echo "
<script language=javascript>
alert('insert');
</script>";
}
if($notice_type == 'del') {
echo "
<script language=javascript>
alert('del');
</script>";
}
?>
</head>
<body>
....
</body>
</html>
댓글 2
-
onseven
2004.01.12 14:02
-
강대형
2004.01.12 14:27
두번 실행된다는 게 말이죠.
만약 php문이 있고 그 다음 태그가 시작되면서 자바스크립트 부분과 html이 들어간다고 하면
앞부분 php문에 어떤 조건이 되어서 메세지 박스를 출력하라고 하면요.
그 조건이 되어서 메세지박스가 뜰 때 두번 떠요.
예를들어 장바구니에 물건이 담겼을때 "장바구니에 물품이 담겨졌습니다."라는 메세지가 뜨죠.
근데 그건 한번만 뜨면 되는데 주문할 때마다 저게 두번씩 뜨는 거예요.
땡~ 하면서 "장바구니에 담겨졌습니다." 라고 떠서 엔터 누르면 또 장바구니에 담겨졌다고 하는 거예요.
그래서 그 메세지 출력 부분을 자바스크립트 뒤로 옮기니까 그때는 제대로 한번만 뜨더라구요.
무슨 문제가 있는지 도통 모르겠어요.
exit;를 넣어보세요~
if($mode == 'insert') {
echo "
<script language=javascript>
alert('insert');
</script>";
exit;
}
이런식으로요^^;훔~