요 3개가 만나면 무슨일이 생길까.. 

safari / firefox 에서는 Form.serialize() 에서 값을 전혀 가져오지 못한다.


안될땐 검색.. 

prototype1.5 에서는 Form.serialize()가 안된다는 글이 보이고 1.5.1에서 fix 되었다고 하여 잽싸게 바꿔봤지만

안됨.. 


결정적으로 되는페이지가 있고 안되는 페이지가 있음을 확인하고 

prototype 코드에서 로그를 찍어가며 차분하게 원인을 좁혀 나가다가 확인하고 황당한 원인을 찾을수 있었다.


1. 되는거 

<td>

<form id="form1">

<table>

<tr>

<td><input ~~ /></td>

</tr>

....

2. 안되는거 

<td>

<table>

<form id="form1">

<tr>

<td><input ~~ /></td>

</tr>

....


결론 : <table> 태그밑에 바로 <form> 태그를 두지 마라. 그리고 그 form을 serialize 해봐라.. 안된다.

javascript framework도 다 java 기본 함수들을 쓸텐데. 다른 프레임웍에서도 충분히 발생 할 수 있는 문제이다. 


물논 퍼블리셔가 짜임새있게 해놓으면 저런건 구경할일도 없겠지만 우리는 살다보면 황당한 코드를 만나게 마련이다..



Posted by 마법수정화살
,

이 일로 ie 구버전을 더 싫어 하게 되었다


form을 submit 하거나 ajax를 통해 게시물을 등록 할수 있는 웹어플리케이션이 있다.

첨부파일까지 등록 하려고 한다. 


그래서 jquery의 form 플러그인중  ajaxsubmit 함수가 좋은 것 같아서 사용했다. 

multipart-form data가 잘 받아진다. 


문제는 ie7 ,8 ,9 의 callback을 보면 황당하다.. 

본문 내용이 오거나 페이지 전체가 result로 넘어온다...


첨부파일 용량 제한, 확장자 제한을 처리하고 callback에서 처리하려고 해도 답이 없다.

급한 건이어서 일단 꼼수로 callback을 체크하도록 수정은 했는데.. 기분이 찝찝하다.

다시 바꾸기엔 시간도 부족 테스트 제대로 하려면 밤을새도 안될듯 하다.. 


mulipart-form의 ajaxSubmit 할때 해당 브라우저의 이슈가 있다.

다른 사이트의 소스를 보니 popup을 사용한것 같고 에러리턴 등은 out에 스크립트를 넣어서 하는것 같다. 


만약 이러한 기능이 필요하고 아직 개발 단계라면 브라우저 이슈를 충분히 생각하고 작업 하시길~


꼼수는 

해당 브라우저의 경우 결과를 세션에 저장해 두고 다른페이지를 ajax로 한번 더 호출...하여 사용하는 것이다.

물론 테스트를 잘 해야한다. 세션 리셋하는것 까먹으면 안됨..


끗  



Posted by 마법수정화살
,

네트워크가 불안정 한지 확인할 때 가장 쉬운방법이 ping을 지속적으로 날려보는것 같다. 

하지만 ICMP프로토콜을 사용하지 못해서 ping 테스트가 어려운 경우가 있다. 


web application이라면 http로 ping테스트를 해볼수 있다. 

아래 주소를 참조.

http-ping.exe 를 걍 windows\system32에 넣는다.

http://www.coretechnologies.com/products/http-ping/


ex) https://localhost:8443 를 5초마다 호출하여 ping.log 라는 파일에 쌓는다. 

http-ping -t -i 5 -f ping.log https://localhost:8443


-i : 시간 (sec)

-t : 멈출때까지 실행

-f : 해당 파일에 저장. 


또 다른 방법 tcp ping
tcpping.exe 를 걍 windows\system32에 넣는다.

http://www.elifulkerson.com/projects/tcping.php

Usage: tcping [-t] [-d] [-i interval] [-n times] server-address [server-port]

         -t   : ping continuously until stopped via control-c
         -n 5 : for instance, send 5 pings
         -i 5 : for instance, ping every 5 seconds
         -w 100 : for instance, wait 100 milliseconds for a response
         -d   : include date and time on each line
         -b 1 : enable beeps (1 for on-down, 2 for on-up,
                              3 for on-change, 4 for always)
         -r 5 : for instance, relookup the hostname every 5 pings
         -s   : automatically exit on a successful ping
         -v   : print version and exit

        If you don't pass server-port, it defaults to 80. 

tcping –t –d localhost 443 >> ping.txt

끝.

Posted by 마법수정화살
,