AJAX는 어떻게 작동합니까?


87

AJAX의 본질은 무엇입니까? 예를 들어, 사용자가이 링크를 클릭 할 때 현재 페이지를 다시로드하지 않고도 일부 정보가 내 서버로 전송되도록 내 페이지에 링크를 갖고 싶습니다. 그게 AJAX입니까?

isoframe을 사용하여이 동작을 얻을 수있었습니다. 더 자세히 설명하면 작은 isoframe에 링크 (작은 이미지라고합시다)를 넣었습니다. 사용자가이 링크를 클릭하면 브라우저는 isoframe의 페이지 만 다시로드합니다.

하지만 목표를 달성하는 우아한 방법은 아니라고 생각합니다. AJAX를 사용해야한다고 생각합니다. 어떻게 작동합니까? XHTML을 사용하면 고려 된 문제를 우아한 방식으로 해결할 수 있습니까? 아니면 JavaScript를 사용해야합니까?

나는 많이 필요하지 않습니다. 나는 (클릭 후) 서버에 정보를 보내는 작은 링크를 원합니다. 메시지 근처에 "별 이미지"가 있다고 가정 해 보겠습니다. 사용자가 별표 (메시지를 좋아함)를 클릭하면 별표 색상과 내 서버 업데이트 데이터베이스 (사용자가 메시지를 좋아함을 기억하기 위해)를 변경합니다.


8
wikipedia에 대한 필수 링크 : en.wikipedia.org/wiki/Ajax_(programming)
Jon B

답변을 보려면 다음 링크를 방문하십시오 : w3schools.com/php/php_ajax_intro.asp

답변:


121

AJAX (Asynchronous Javascript And XML의 약자)를 완전히 처음 사용하는 경우 wikipedia 의 AJAX 항목이 좋은 시작점입니다.

DHTML 및 LAMP와 마찬가지로 AJAX는 그 자체로 기술이 아니라 기술 그룹입니다. AJAX는 다음의 조합을 사용합니다.

  • 마크 업 및 스타일링 정보를위한 HTML 및 CSS.
  • 제공된 정보를 동적으로 표시하고 상호 작용하기 위해 JavaScript로 액세스하는 DOM입니다.
  • 브라우저와 서버간에 비동기 적으로 데이터를 교환하여 페이지 다시로드를 방지하는 방법입니다. 일반적으로 XMLHttpRequest (XHR) 개체가 사용되지만 IFrame 개체 또는 동적으로 추가 된 태그가 대신 사용되는 경우도 있습니다.
  • 브라우저로 전송되는 데이터의 형식입니다. 일반적인 형식에는 XML, 미리 형식이 지정된 HTML, 일반 텍스트 및 JSON (JavaScript Object Notation)이 포함됩니다. 이 데이터는 어떤 형태의 서버 측 스크립팅에 의해 동적으로 생성 될 수 있습니다.

보시다시피 순수한 기술적 관점에서 볼 때 여기에는 정말 새로운 것이 없습니다. AJAX 부품의 대부분은 1994 년 ( XMLHttpRequest객체의 경우 1999 년)에 이미 존재했습니다 . 진짜 참신한 점은 Google이 GMail (2004) 및 Google Maps (2005)에서했던 것처럼 이러한 부분을 함께 사용하는 것 입니다. 사실 두 사이트 모두 AJAX 홍보에 크게 기여했습니다.

클라이언트와 원격 서버 간의 통신과 클래식 애플리케이션과 AJAX 기반 애플리케이션 간의 차이점을 보여주는 다이어그램 아래에 천 단어의 가치가있는 그림이 있습니다.

대체 텍스트

주황색 부분의 경우 모든 것을 손으로 ( XMLHttpRequest객체를 사용하여 ) 수행하거나 jQuery , Prototype , YUI 등과 같은 유명한 JavaScript 라이브러리를 사용 하여 애플리케이션의 클라이언트 측을 "AJAXify"할 수 있습니다. 이러한 라이브러리는 JavaScript 개발의 복잡성 (예 : 브라우저 간 호환성)을 숨기는 것을 목표로하지만 단순한 기능에는 지나칠 수 있습니다.

서버 측에서는 일부 프레임 워크 (예 : Java를 사용하는 경우 DWR 또는 RAJAX) 도 도움이 될 수 있지만 기본적으로 페이지를 부분적으로 업데이트하는 데 필요한 정보 만 반환하는 서비스 (처음에는 XML로 / XHTML-AJAX의 X- 요즘 JSON 이 선호되는 경우가 많습니다.)


17

AJAX의 핵심은 다음과 같습니다.

페이지는 사용자가 다른 작업을 수행하는 동안 웹을 탐색하고 자신의 콘텐츠를 업데이트 할 수 있습니다 .

즉, 자바 스크립트는 비동기 GET 및 POST 요청 (일반적으로 XMLHttpRequest객체 를 통해 )을 보낸 다음 해당 요청의 결과를 사용하여 페이지를 수정합니다 ( 문서 객체 모델 조작을 통해 ).


이 "자체 업데이트"가 실제로 작동하는 것을 직접 볼 수있는 예가 있습니까?
Daniel Springer

17

AJAX는 일반적으로 전체 페이지를 다시로드하지 않고 클라이언트에서 서버로 HTTP 요청을 보내고 서버의 응답을 처리하는 작업을 포함합니다. (비동기 적으로).

Javascript는 일반적으로 제출을 수행하고 서버에서 데이터 응답을 수신합니다 (전통적으로 XML, 종종 JSON과 같은 덜 장황한 형식).

그러면 자바 스크립트는 페이지 DOM을 동적으로 업데이트하여 사용자의보기를 업데이트 할 수 있습니다.

따라서 '비동기 Javascript 및 XML'.

페이지를 다시로드하지 않고 사용자보기를 업데이트 할 수있는 다른 옵션 (예 : Flash 및 Applets)이 있지만 이러한 옵션은 귀하의 사례에 적합한 솔루션처럼 들리지 않습니다. Javascript가 갈 길인 것처럼 들립니다. 이 사이트에서 사용되는 jQuery 와 같은 좋은 라이브러리 지원 이 많이 있으므로 실제로 많은 Javascript를 직접 작성할 필요가 없습니다.


나는이 대답을 좋아한다. @Verrtex 당신이 알아야 할 모든 것은 XMLHttpRequest에 관한 것입니다.
enguerran

13

Ajax는 페이지의 일부만 다시로드하는 것 이상입니다. Ajax는 Asynchronous Javascript And Xml을 의미합니다.

Ajax에서 필요한 유일한 부분은 자바 스크립트 의 XMLHttpRequest 객체입니다. HTML의 작은 부분을 div 또는 다른 태그로로드하고 다시로드하려면이를 사용해야합니다.

읽기 읽으면 생각하는대로 빨리 프로가 될 것입니다!

<html>
<body>

<script type="text/javascript">
function ajaxFunction()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {
  // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
else
  {
  alert("Your browser does not support XMLHTTP!");
  }
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
  {
  document.myForm.time.value=xmlhttp.responseText;
  }
}
xmlhttp.open("GET","time.asp",true);
xmlhttp.send(null);
}
</script>

<form name="myForm">
Name: <input type="text" name="username" onkeyup="ajaxFunction();" />
Time: <input type="text" name="time" />
</form>

</body>
</html>

1
이름에도 불구하고 AJAX에는 XML이 필요하지 않지만 AJAX라는 단어 / 약어에서 X는 XML을 나타냅니다. 이는 역사적으로 서버와 클라이언트 간의 통신 방식이기 때문입니다.
enguerran

5

AJAX는 비동기 Javascript 및 XML을 나타냅니다. AJAX는 전체 페이지를 서버에 다시 게시하지 않고도 페이지에 대한 부분 업데이트를 지원합니다.

AJAX에는 다양한 옵션이 있습니다. 가장 주목할만한 두 가지는 (논란의 여지가 있지만) Microsoft의 ASP.NET AJAX (이전 Atlas)와 jQuery입니다.

ASP.NET AJAX는 이미 ASP.NET에 익숙하다면 설정하기가 비교적 쉽습니다. jQuery는 이미 자바 스크립트를 알고있는 경우 유용하며 페이지 쿼리 및 업데이트를 매우 세부적으로 제어 할 수 있습니다.

HTH


2

관심이 있으시다면 IBM은 Ajax : Mastering Ajax part 1 에 대한 10 개 (아마도 더 많은) 파트 시리즈를 보유하고 있습니다.

몇 살이되었지만 지금은 좋은 인트로입니다. (첫 부분을 방금 읽었더라도!)

지금 은 사이트가 조금 느리지 만 전체 시리즈가 여기 에 나열되어야한다고 생각합니다 .

요약:

HTML, JavaScript ™ 기술, DHTML 및 DOM으로 구성된 Ajax는 투박한 웹 인터페이스를 대화 형 Ajax 애플리케이션으로 변환하는 데 도움이되는 뛰어난 접근 방식입니다. Ajax 전문가 인 저자는 개요에서 세부적인 모습까지 이러한 기술이 함께 작동하여 매우 효율적인 웹 개발을 쉽게 현실화하는 방법을 보여줍니다. 그는 또한 XMLHttpRequest 객체를 포함하여 Ajax의 핵심 개념을 공개합니다.


1

그것은 아약스입니다. 자바 스크립트 없이는 ajax를 사용할 수 없습니다. 사용법에 대한 아이디어를 얻으려면 jquery 및 프로토 타입 예제를 살펴 봐야합니다.


일부 출처에 따르면 VBScript로 AJAX를 수행 할 수 있습니다. 그래도 할 이유가 없습니다. :-)
Nosredna

아니, 할 수 없습니다. VBScript로 AVAX를 수행 할 수 있습니다.
Stefan Kendall

6
헤. AJAX가 비동기 JavaScript 및 XML이라고 들었습니다. 비동기 일 필요는없고 JavaScript 일 필요도없고 XML 일 필요도 없습니다.
Nosredna

0

당신이하려는 것은 기술적으로 ajax입니다. Ajax는 페이지의 섹션을 업데이트하기 위해 xhtml 조각 트랜잭션을 생성합니다. Javascript는 이러한 요청을 멋지고 깔끔하게 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.