* Ajax 객체
이 객체는 AJAX기능을 제공하는 많은 다른 클래스를 위한 root와 명명공간(namespace)처럼 제공한다
+ 프라퍼티
- activeRequestCount
진행중인 AJAX요청의 수
+ 메소드
- getTransport()
새로운 XMLHttpRequest 객체를 반환
* Ajax.Responders 객체
Enumerable를 상속하였다.
Ajax관련 이벤트가 발생할때 호출될 객체의 목록을 보존한다.
당신이 AJAX작업을 위한 전역 예외 핸들러를 연결하길 원한다면 이 객체를 사용할수 있다.
Ajax 를 컨트롤하기 위해서 내부적으로 사용되어 지는것 같다.
음.. 어디까지 나 추측이다.
난 써본적이없다.
+ 프라퍼티
- responders
객체의 목록은 AJAX이벤트 알림(notifications)을 위해 등록되었다
+ 메소드
- register(responderToAdd)
responderToAdd: 호출될 메소드를 가진 객체
responderToAdd인자를 전달하는 객체는 AJAX이벤트(이를테면, onCreate, onComplete, onException 등등)처럼 명명된 메소드를 포함해야만 한다.
메소드를 등록하는것이다.
미리 정의된 이벤트에 대응하는 모든 메소드가 호출된다.
- unregister(responderToRemove)
responderToRemove: list로부터 제거될 객체
메소드 목록에서 responderToRemove객체를 지운다.
- dispatch(callback, request, transport, json)
callback: 보고되는 AJAX이벤트 이름
request: 이벤트를 책임지는 the Ajax.Request 객체
transport: AJAX호출을 가지는 XMLHttpRequest 객체
json: 응답의 X-JSON 헤더(존재할때만)
등록된 객체의 목록을 통해 실행하는 것은 callback 인자내 결정된 메소드를 가지는 것을 찾는다.
호출되는 각각의 메소드는 다른 3개의 인자를 전달한다.
AJAX응답이 몇몇 JSON컨텐츠를 가지는 X-JSON HTTP 헤더를 포함한다면, 이것은 평가되고 json인자로 전달될것이다.
만약 이벤트가 onException라면, transport인자는 대신에 예외를 가질것이고 json은 전달되지 않을것이다.
무슨 말인지 잘 몰르겠다.. ㅡ.,ㅡ
* Ajax.Base 클래스
이 클래스는 Ajax객체내 정의된 다른 대부분의 클래스를 위한 기본(base)클래스처럼 사용된다.
- setOptions(options)
options: AJAX 옵션
AJAX작업을 위해 필요한 옵션 셋팅
- responseIsSuccess()
만약 AJAX작업이 성공한다면 true를 반환하고, 실패한다면 false를 반환
- responseIsFailure()
responseIsSuccess()와는 반대.
* Ajax.Request 클래스
Ajax.Base로 부터 상속
Ajax 작업을 캡슐화한다.
즉 지저분한 코드를 숨기고 포장하여 코드를 깔끔하게 만든다.
Prototype Ajax 의 핵심일것이다.
+ 프로퍼티
- Events
Array 타입이다.
AJAX작업중 보고되는 가능한 이벤트/상태의 목록.
목록은 'Uninitialized', 'Loading', 'Loaded', 'Interactive', 그리고 'Complete.'를 포함한다.
- transport
XMLHttpRequest 타입이다.
AJAX작업을 가지는 XMLHttpRequest 객체
- url
String 타입이다.
요청에 의해 대상이 되는 URL
+ 메소드
- [ctor](url, options)
url: ajax 호출에 응답하여 결과를 주기위한 서버측 url
options: AJAX 옵션
주어진 옵션을 사용하여 주어진 url을 호출할 이 객체의 하나의 인스턴스를 생성.
중요사항: 선택된 url은 브라우저의 보안 셋팅을 위한 대상이 될 가치가 없다.
많은 경우 브라우저는 현재 페이지처럼 같은 호스트로부터가 아니라면 url을 가져오지 않을것이다.
당신은 설정을 피하거나 사용자의 브라우저를 제한하기 위한 로컬 url만을 사용할 것이다.
- evalJSON()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것은 AJAX응답내 존재하는 X-JSON HTTP헤더의 컨텐츠를 평가하기 위해 내부적으로 호출된다.
- evalReponse()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
AJAX응답이 text/javascript의 Content-type헤더를 가진다면, 응답 몸체는 평가되고 이 메소드는 사용될것이다.
- header(name)
name: HTTP 헤더명
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것은 AJAX응답의 HTTP헤더의 컨텐츠를 가져오기 위해 내부적으로 호출된다.
- onStateChange()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것은 AJAX호출 상태 변경시 객체 자체에 의해 호출된다.
- request(url)
url: AJAX호출을 위한 url
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것은 생성자를 호출하는 동안 벌써 호출되었다.
- respondToReadyState(readyState)
readyState: 상태 숫자값(1 에서 4)
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것은 AJAX호출 상태가 변경될때 객체 자체에 의해 호출된다.
- setRequestHeaders()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것은 HTTP요청을 하는 동안 보내어질 HTTP헤더를 조합하기 위한 객체 스스로에 의해 호출된다.
* options 인자 객체
AJAX작업의 중요한 부분은 options 인자이다.
이것은 기대되는 프라퍼티를 가지는 동안 어떠한 객체도 전달될수 있다.
이것은 AJAX호출을 위해 익명 객체를 생성하는 것이 공통적이다.
+ 프라퍼티
- method
String 타입이고 'post'값을 초기값으로 갖는다.
HTTP요청의 메소드
- parameters
String 타입이고 ''값을 초기값으로 갖는다.
요청에 전달한 값들의 url형태의 목록
- asynchronous
Boolean 타입이며 true 값을 초기값으로 갖는다.
AJAX호출이 비동기적으로 만들어지는지 표시
- postBody
String 타입이다.
HTTP POST의 경우 요청의 몸체내 전달되는 내용
- requestHeaders
Array 타입이다.
요청과 함께 전달되기 위한 HTTP헤더의 목록.
이 목록은 많은 수의 항목을 가져야 한다.
나머지 항목은 사용자 정의 헤더의 이름이다.
그리고 다음의 항목은 헤더의 문자열 값이다.
예제 : ['my-header1', 'this is the value', 'my-other-header', 'another value']
- onXXXXXXXX
Function(XMLHttpRequest) 타입이다.
각각의 이벤트/상태가 AJAX호출이 발생하는 동안 도착할때 호출될 사용자정의 함수.
예제 var myOpts = {onComplete: showResponse, onLoaded: registerLoaded};.
사용되는 함수는 AJAX작업을 가지는 XMLHttpRequest객체를 포함하는 하나의 인자를 받을것이다.
- onSuccess
Function(XMLHttpRequest) 타입이다.
AJAX호출이 성공적으로 완성될때 호출될 사용자정의 함수. 사용되는 함수는 AJAX작업을 가지는 XMLHttpRequest객체를 포함하는 하나의 인자를 받을것이다.
- onFailure
Function(XMLHttpRequest) 타입이다.
AJAX호출이 에러를 가진채 끝날때 호출될 사용자정의 함수. 사용되는 함수는 AJAX작업을 가지는 XMLHttpRequest객체를 포함하는 하나의 인자를 받을것이다.
- insertion
Function(Object, String) 타입이다.
null 삽입하기 위해 호출되는 함수는 텍스트를 요소로 반환한다.
함수는 수정되기 위한 요소객체와 Ajax.Updater객체에만 적용되는 응답 텍스트의 두개의 인자를 가지고 호출된다.
- evalScripts
Boolean 타입이며 false 값을 기본값으로 가진다.
스크립트 블럭이 응답이 도착했을때 평가할지를 판단.
Ajax.Updater객체에만 적용.
- decay
Number 타입이며 1 값을 기본값으로 가진다.
Ajax.PeriodicalUpdater 객체는 받은 응답이 마지막 것과 같을때 비율을 새롭게 하여 연속적인 후퇴를 결정.
예를 들어, 당신이 2를 사용한다면, 새롭게 된것중에 하나가 이전것과 같은 결과를 만든후에, 객체는 다음 refresh를 위한 시간의 두배를 기다릴것이다.
이것은 다시 반복한다면, 객체는 4배를 기다릴것이다. 이것을 후퇴를 피하기 위해 정의되지 않거나 1을 사용하도록 남겨두라.
- frequency
Number 타입이며 2 의 기본값을 가진다.
초단위의 갱신간격(횟수가 아닌), Ajax.PeriodicalUpdater객체에만 적용.
* Ajax.Updater 클래스
Ajax.Request로 부터 상속
요청된 url이 당신 페이지의 특정 요소내 직접적으로 삽입하길 원하는 HTML을 반환할때 사용된다.
당신은 url이 도착을 평가할 <script>블럭을 반환할때 이 객체를 사용할수 있다.
스크립트로 작업하기 위해 evalScripts 옵션을 사용하라.
+ 프라퍼티
- containers
Object 타입이다.
이 객체는 두개의 프라퍼티(containers.success 는 AJAX호출이 성공할때 사용될것이다. 그리고 AJAX호출이 실패한다면 containers.failure가 사용될것이다.)를 포함한다.
+ 메소드
- [ctor](container, url, options)
container: 이것은 요소의 id, 요소객체 자체, 또는 두개의 프라퍼티(AJAX호출이 성공했을때 사용될 object.success 요소(또는 id), 그리고 AJAX호출이 실패했을때 사용될 object.failure요소(또는 id))를 가지는 객체가 될수 있다.
url: ajax 의 요청에 응답하기 위한 서버측 주소
options: AJAX 옵션
주어진 옵션을 사용하여 주어진 url을 호출할 이 객체의 하나의 인스턴스를 생성.
- updateContent()
이 메소드는 내부적으로 사용되고 사용자가 호출하지 않는다.
이것은 응답을 받았을때 객체 자체에 의해 호출된다.
이것은 HTML로 적절한 요소를 수정하거나 insertion옵션내 전달되는 함수를 호출할것이다.
이 함수는 두개의 인자(수정되기 위한 요소와 응답 텍스트)를 가지고 호출될것이다.
* Ajax.PeriodicalUpdater 클래스
Ajax.Base로 부터 상속
이 클래스는 반복적으로 인스턴스화하고 페이지에서 요소를 새롭게 하거나 Ajax.Updater가 수행할수 있는 다른 작업중 어느것을 수행하기 위한 Ajax.Updater객체를 사용한다.
좀더 많은 정보를 위해 Ajax.Updater 참조를 체크하라.
+ 프라퍼티
- container
이 값은 Ajax.Updater생성자에 일관적으로 전달될것이다.
- url
String 타입이다.
이 값은 Ajax.Updater의 생성자에 일관적으로 전달될것이다.
- frequency
Number 타입이다.
초단위의 refresh간격.
디폴트는 2초.
이 숫자는 Ajax.Updater 객체를 호출할때 현재 축소(decay)에 의해 곱해질것이다.
- decay
Number타입이다.
작업을 재-수행할때 적용될 축소(decay)레벨을 유지
- updater
Ajax.Updater 타입이다.
가장 최신에 사용된 Ajax.Updater 객체
- timer
다른 refresh를 위한 시각일때 객체를 알리기 위해 사용되는 자바스크립트 타이머
+ 메소드
- [ctor](container, url, options)
container:이것은 요소의 id, 요소객체 자체, 또는 두개의 프라퍼티(AJAX호출이 성공할때 사용될 object.success 요소(나 id), AJAX호출이 실패할때 사용할 object.failure 요소(나 id))를 가지는 객체가 될수 있다.
url: ajax 가 서버에 요청을 할주소
options: AJAX 옵션 주어진 옵션을 사용하여 주어진 url을 호출할 이 객체의 하나의 인스턴스를 생성
- start()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것의 정기적인 작업 수행을 시작하기 위해 객체 자체에 의해 호출된다.
- stop()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것의 정기적인 작업 수행을 시작하기 위해 객체 자체에 의해 호출된다.
- updateComplete()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
요청을 완성한 후에 사용되는 Ajax.Updater에 의해 호출된다.
이것은 다음 refresh스케줄링 하기 위해 사용된다.
- onTimerEvent()
이메소드는 내부호출용으로 사용되어지고 사용자는 사용하지 않을것이다.
이것은 다음 수정을 위한 시각일때 내부적으로 호출된다.

