스크립트 상에서 처리순서
불꾼
질문 하나 드리겠습니다
자바스크립트상에서 다음과 같은 코드가 있다고 합니다
수행하는 곳은 자식윈도우 입니다.
document.forms[0].submit();
opener.reload();
위 코드에서 sumit() 하면 정보가 DB에 저장이 됩니다.
그리고 부모창을 리로드 하면 DB에 업데이트된 정보가 나옵니다.
그런데 이 순서가 꼬이는것 같습니다.
리로드 될 시점에 DB에 자료가 들어가 있다고 생각했는데 실제 리로드가 된 결과를 보면 자료가 보이지 않습니다.
또 다른 자료를 넣으면 이전에 넣었던 자료가 나옵니다.
자료가 제대로 들어가고 제대로 보이다가도 어느순간에는 넣은 자료가 리로드되는 시점에 안보이기도 합니다.
웹에서는 submit() 하는 것과 그 뒤에 수행되는 코드는 서로 별개의 순서로 동작을 하는지 궁금합니다.
결과가 나왔다 안나왔다 하면서 그것도 규칙적인것도 아닌 불규칙적으로 일어나니까 어찌할 방도를 모르겠습니다.
-
그림자
아마도 submit을 하고 난 뒤에 데이터의 처리 결과를 받지 않은 상태에서 opener(부모창)을 reload 하기 때문에
부모쪽에서는 제대로 submit 된 결과를 받을 수 없는 문제라 예상됩니다.
저 역시 테아님 처럼 , action 이 실행 되면 그 응답으로 하나의 페이지가 날아올거고.
그 페이지에 opener.reload()를 호출하도록 하겠습니다.
( 이게 가장 확실한 방법이겠죠? submit 이 처리 되어야만 페이지가 날아 올테므로 )
-
매1력적
저도 임시방편으로 테아님이 말해준 방법을 쓰고 있습니다. 혹시 다른 방법은 없는지요.. 그 방법을 쓰면 만약 네트웍 속도가 느리다면 페이지 열리고 닫히는것이 보일수도 있기 때문입니다 ㅠㅠ
-
물보라
위처럼 처리할 경우 네트웤 속도라던지... 디비입력시간이라던지.. 여러가지 변수에 의해서
상황이 매번 다르게 나옵니다;; 디비에 빠르게 들어가고 네트웤이 빠르다면
submit이되고 reload가 되겠지만.. 그렇지 않다면.. 뭐. 하여간 대략 난감하죠.. 저런경우..
우선 submit을 합니다. 그럼 sumbit을 받는 action 페이지가 있겠죠?
거기서 마지막에 opener.reload() 를 해주시거나 하는게 좋을꺼같네요..
위에 두가지 -
사랑
DB 저장이라면 저장되는데 걸리는 시간이 있기 때문일 수도 있습니다
저장이 되었는지를 확인한 뒤 reload 해주시길