[완료] javascript의 변수를 php파일의 인자로 넘기려면???

yundorri의 이미지

안녕하세요, php, html, javascript를 이용하여 엑셀시트와 같은 스타일의
내용조회 페이지를 꾸미고 있습니다.

프레임을 네 개로 나누었습니다. TopLeft, TopRight, BottomLeft, BottomRight이렇게요,
위 Top 프레임은 테이블제목이고 Bottom은 그 데이터입니다.
엑셀 시트를 생각하시면 됩니다.

Top 프레임의 제목을 클릭하면 아래 Bottom의 데이터가 정렬이 되어야 합니다.
한번 누르면 오름차순, 또 한번 누르면 내림차순 이렇게요...

TopLeft.php의 Header부분에 다음과 같은 script code를 넣었습니다.

 9     <script language="JavaScript">
10         ascending = "asc";
11
12         function alter_ordering()
13         {
14             if( ascending == "asc" ) ascending = "desc";
15             else ascending = "asc";
16         }
17     </script>

ascending은 javascript 전역변수입니다.
그리고 table에서 제목을 클릭했을 때 "alter_ordering()" 을 수행하여
ascending값을 반전시켜주고 BottomLeft, BottomRight 를 갱신해 주기위해서
다음과 같이 하였습니다.

 
 
41  <table cellspacing='1' cellpadding='1' width='<? echo $space[1]; ?>' height='70%' border='0'>
42  <tr>
43        <td valign='middle' align='center' width='<? echo $space[1]; ?>' >
44        <a href='#' onclick="javascript:alter_ordering();
45            parent.BottomLeft.location.href='BottomLeft.php?method=<? echo $title[1];?>&ordering=<? echo "<script> document.write( ascending ); </script>';
46            parent.BottomRight.location.href='BottomRight.php?method=<? echo $title[1];?>&ordering=<? echo "<script> document.write( ascending ); </script>"; ?>'"
47            style='text-decoration:none;'><? echo $title[1]; ?></a>
48      </td></tr></table>

$space[1]은 제목의 테이블 width이고, $title[1]은 테이블 제목 string입니다.
onclick시 alter_ordering()을 호출하여 javascript변수 ascending값을 변경하고
변경된 ascending값을 BottomLeft.php, BottomRight.php의 인수로 넘기고 싶습니다.

위와 같이 하니까, BottomLeft.php, BottomRight.php내에서 ascending 변수가 정의되지 않았다는 에러가 납니다.어떻게 해야될지 막막합니다. javascript 배운지 3~4일 밖에 안되어서 갈팡질팡만 하고 있습니다. 제발 도와주세요.


dude7853의 이미지

parent.BottomLeft.location.href='BottomLeft.php?method=<? echo $title[1];?>&ordering=<? echo "<script> document.write( ascending ); </script>';

대신에
parent.BottomLeft.location.href='BottomLeft.php?method=<? echo $title[1];?>&ordering='+ascending;

이렇게 하시면 됩니다.
yundorri의 이미지

예, 잘 됩니다. ^^ 많은 도움 됐습니다.
저런 문법은 책에서 못 본거 같은데 설명 좀 부탁드릴 수 있을까요?
어느분들은, javascript의 변수값을 php로 넘기려면 페이지를 다시 로딩하는 수 밖에
없다고 하시던데, 그거랑은 다른건지요?

dude7853의 이미지

parent.BottomLeft.location.href='BottomLeft.php?method=<? echo $title[1];?>&ordering='+ascending;

에서 method의 내용은 php에서 채워주고 ascending은 javascript변수이므로 + 연산자로 합쳐준 것 입니다. javascript에서 문자열을 +로 결합할 수 있습니다.

+에 대해서는 책에 나올텐데, 정확히 어떤 문법을 처음 보시는 것인지 지적해주시면 좀더 도움을 드릴수 있을 듯합니다.

그리고 javacript는 웹 브라우저에서 페이지를 로딩할 때 실행되는 것입니다. php는 웹 브라우저에서 서버로 페이지를 요청했을때 그때 코드를 실행하지요.

javascript의 변수값을 php로 넘길때 페이지를 다시 로딩하는 수 밖에 없다는 것은 php의 그러한 특성때문입니다. 페이지를 다시 로딩하는 방법으로 php을 실행해야만 php가 전달된 값을 알 수 있으니까요.

yundorri의 이미지

네 ^^ 이해했습니다. + 연산자를 띄어쓰다가 붙어있는걸 보니 다른건줄 알았습니다. ^^;

/*
제가 아직 이해가 안 가는 것은 저의 코드를 보면 ascending 변수를 (?와 ?) 과 내부에서
사용하기 위함이었는데 ascending은 javascript의 변수이고 (?와 ?) 은 php 부분이니까,
결국은 php로 javascript의 변수를 넘기는 게 되지 않을까요?

그렇다면 지적하신대로 page를 다시 띄우는 수 밖에 없는걸로 보이거든요? 제가 저의 코드를
아직 이해를 못한건지... 참..
*/

위 글을 쓰면서 저의 코드를 다시 보니까, php부분이 아니라 일반 html 부분이었군요. (;_;)
좀 더 자세히 살펴볼 껄 하는 생각이 들었습니다. 그래서 막 적었던 글을 지울까 하다가
이런 사람들도 있다는 걸 보여드리기 위해 코멘트 처리했습니다. ^^

dude7853 님, 감사합니다. 여력이 되신다면 질문 하나 더 올릴텐데 것두 도움부탁드립니다.
(염치가 좀 없는것 같습니다. 죄송합니다. ^^)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.