.serialize() - jQuery API : http://api.jquery.com/serialize/

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});

오늘 jQuery를 가지고 스크립트를 작성하다가 jQuery를 이용해서 form 객체를 호출해서 jquery.submit() 메서드를 실행했는데 안먹히는 거다. 왜 그런거지!? 하면서 끙끙거리면서 고민하다가 옆에 계신 실장님께 도움을 요청하여 왜그런지 분석하다가 jQuery Document에 있는 걸 그대로 따라한 소스를 보시고서는

이건 센스가 없는거에요. 이 코드가 작동되는 것이 맞지만, 굳이 이렇게 할 필요가 있을까요?
이렇게 하면 될텐데?

라고 하시며 조언을 해주시는데...

document.forms['form'].submit();

이건 된다.

$('#form').submit();

이건 안된다.

$('#form').get(0).submit();

이건 된다. 단, 이렇게 get(0)으로 꺼내게 될 경우에는 jQuery에서 다루는 객체가 아니라 실제 form 객체이기 때문에 submit() 메서드는 jquery에서 다루기가 어려워진다. 즉, 복잡시러워지는거다. 문득 생각난건데.

$($('#form').get(0)).submit(function() {

});

요렇게하면 쓸 수 있지 않을까란 잡생각도 잠시 해봤다.

가만히 보고 있으니, 굳이 form.submit()을 실행하는 이벤트를 가로채서 ajax처리할 필요가 없었다.

var serializeObject = $form.serialize();

로 form에 있는 정보를 문자열로 직렬화해서 ajax로 넘기면 되는 거였다. 흠.


사실 그 앞에서 jQuery를 이용해서 동적으로  document.body에다가 form을 생성하고 거기에 appen로 붙이면서 form객체를 만들고 있었다. 이렇게 만들어진 form 객체를 jQuery를 이용해서 다루려고 했던 것인데, 이 부분에서 내가 생각했던 의도와는 다르게(원래 그렇게 되는 게 맞는 것이었겠지) 동작하고 있었던 것이다. 오류메시지도 나타나질 않으니 당황스러웠기도 하고 황망했다.


난 (개발) 센스가 부족하다. ㅠㅅ-)

센스만점이 되는 그날까지 부지런히 노력하자.




오늘의 교훈 : 난 브라우저(클라이언트)에서 다루는 객체의 계층구조나 동작원리를 제대로 이해하지 못하고 있다는 것이다. 그저 jQuery를 이용해서 다루는 정도가 아니라, 충분히 머리 속에서 동작원리를 이해하고 상상해볼 수 있는 수준까지 도달하기 위한 노력을 잊지 말자.

  • 윈도우 환경 : 경로 ; 사용
  • 유닉스 환경 : 경로 ; 사용

출처: http://aircook.tistory.com/entry/Java-classpath-옵션

 

테스트 프로그램을 구현하다가 웹이 아닌 그냥 자바 클래스를 실행해야 하는 경우가 생겼다.

그런데 -classpath옵션이 windowunix를 틀린것을 발견했다. 웹프로그래밍만 하다 보니 이제껏 이걸 모르고 있었다는게 한심하다.

다른점은 구분자(semi-colon과 그냥 colon)의 차이점이다.

예를 들면 다음과 같다.

window

java -cp .;..\lib\mail.jar;..\lib\activation.jar mail.MailSender


unix

java -cp .:../lib/mail.jar:../lib/activation.jar mail.MailSender


java help를 보니.. 다음과 같이 정확하게 구분자가 나와 있었다.

window

c:\>ver

Microsoft Windows XP [Version 5.1.2600]

c:\>java -h

Usage: java [-options] class [args...]

(to execute a class)

orjava [-options] -jar jarfile [args...]

(to execute a jar file)


where options include:

-clientto select the "client" VM

-serverto select the "server" VM

-hotspotis a synonym for the "client" VM[deprecated]

The default VM is client.


-cp <class search path of directories and zip/jar files>

-classpath <class search path of directories and zip/jar files>

A ; separated list of directories, JAR archives,

and ZIP archives to search for class files.

-D<name>=<value>

set a system property

-verbose[:class|gc|jni]

enable verbose output

-versionprint product version and exit

-version:<value>

require the specified version to run

-showversionprint product version and continue

-jre-restrict-search | -jre-no-restrict-search

include/exclude user private JREs in the version search

-? -helpprint this help message

-Xprint help on non-standard options

-ea[:<packagename>...|:<classname>]

-enableassertions[:<packagename>...|:<classname>]

enable assertions

-da[:<packagename>...|:<classname>]

-disableassertions[:<packagename>...|:<classname>]

disable assertions

-esa | -enablesystemassertions

enable system assertions

-dsa | -disablesystemassertions

disable system assertions

-agentlib:<libname>[=<options>]

load native agent library <libname>, e.g. -agentlib:hprof

see also, -agentlib:jdwp=help and -agentlib:hprof=help

-agentpath:<pathname>[=<options>]

load native agent library by full pathname

-javaagent:<jarpath>[=<options>]

load Java programming language agent, see java.lang.instrument


unix

test|server:/user/test> uname -a

HP-UX server B.11.23 U ia64 3407499753 무제한-사용자 라이선스

test|server:/user/test> java -h

Usage: java [-options] class [args...]

(to execute a class)

orjava [-options] -jar jarfile [args...]

(to execute a jar file)


where options include:

-d32use a 32-bit data model if available

-d64use a 64-bit data model if available

-serverrun the HotSpot VM, tuned for long-lived,

server applications (default)

-hotspotsynonymous to the -server option

-clientrun the HotSpot VM, tuned for short-lived,

GUI applications

If present, the option to select the VM must be first.

The default VM is -server.


-cp <class search path of directories and zip/jar files>

-classpath <class search path of directories and zip/jar files>

A : separated list of directories, JAR archives,

and ZIP archives to search for class files.

-D<name>=<value>

set a system property

-verbose[:class|gc|jni]

enable verbose output

-versionprint product version and exit

-version:<value>

require the specified version to run

-showversionprint product version and continue

-jre-restrict-search | -jre-no-restrict-search

include/exclude user private JREs in the version search

-? -helpprint this help message

-Xprint help on non-standard options

-ea[:<packagename>...|:<classname>]

-enableassertions[:<packagename>...|:<classname>]

enable assertions

-da[:<packagename>...|:<classname>]

-disableassertions[:<packagename>...|:<classname>]

disable assertions

-esa | -enablesystemassertions

enable system assertions

-dsa | -disablesystemassertions

disable system assertions

-agentlib:<libname>[=<options>]

load native agent library <libname>, e.g. -agentlib:hprof

see also, -agentlib:jdwp=help and -agentlib:hprof=help

-agentpath:<pathname>[=<options>]

load native agent library by full pathname

-javaagent:<jarpath>[=<options>]

load Java programming language agent, see java.lang.instrument

이 글은 스프링노트에서 작성되었습니다.

'Java > Language' 카테고리의 다른 글

자주 발생하는 에러와 해결방법  (0) 2009.09.08
J2SE와 J2EE의 차이점  (3) 2009.09.06
JRE와 JDK의 차이, JRE  (0) 2009.09.06
Java를 익히기 위한 13가지 학습 항목들  (0) 2009.09.04
기술면접 관련 내용 정리  (2) 2009.09.02

+ Recent posts