해당 코드를 설명하자면
가장 먼저 변수를 선언했는데.
팝업으로 띄울 url(띄울 url), target(팝업이름), spec(속성)을 변수로 선언하고
해당 팝업을 띄울때 about:blank 내용을 교체하기 위한 (post 요청을할) $form 변수를 선언하고 submit() 즉 post요청을
위하여 body에 해당 $form을 추가해주었다.
window.open 매서드를 통해서 새로운 팝업을 띄웠다.
즉 현재 페이지는 : /test.do 요청에 의해서 home.jsp 파일이 열린 창이고
open에 의해서 띄워진 창은 window.open 요청에 의해서 target 의 이름을 가진(popOne) about:blank 창이 띄워졌다.
그리고 바로 $form 의 내용을 submit() 하여 /go.do 요청을 하여 해당 url에 해당하는 jsp 페이지를
form 태그의 속성 target이 가리키는 이름 popOne에 응답하여 빈공백이였던 about:blank 창이 home2.jsp 화면이 출력됬다.
즉 그림으로 설명하면
이된다.
** 추가 적으로
post, get이든 server로 요청을 할때 400에러가 뜨는 경우가 있다. 이런 경우는 해당 URL이 잘못 됬을 경우가 가장큰데
잘 했는데도 왜 계속 400 에러가 뜨는 경우에는 해당 URL에 특수문자가 포함되어 있어 escape() 함수를 통해 특수문자를 치환 해줘야 하는 경우가 있다.
해당 특수문자가 포함되어 있는지 한번 확인을 해보고, 포함되어 있다면 escape() 함수를 통해 변환하거나 아래와 같이 치환하여 사용해야 한다.
문자 | URL 인코딩 | 문자 | URL 인코딩 | 문자 | URL 인코딩 |
탭 | %09 | \ | %5C | ? | %3F |
공백 | %20 | , | %2C | @ | %40 |
! | %21 | . | %2E | ^ | %3E |
" | %22 | / | %2F | { | %7B |
# | %23 | : | %3A | } | %7D |
% | %25 | ; | %3B | [ | %5B |
& | %26 | < | %3C | ] | %5D |
( | %28 | > | %3E | ` | %60 |
) | %29 | = | %3D | | | %7C |
+ | %2B | $ | %24 | ~ | %7E |
해당 URL 인코딩 출처는 다음과 같습니다.