AJAX 중국어 참조 매뉴얼login
AJAX 중국어 참조 매뉴얼
작가:php.cn  업데이트 시간:2022-04-12 16:00:57

XHR 요청



XMLHttpRequest 객체는 서버와 데이터를 교환하는 데 사용됩니다.


서버에 요청 보내기

서버에 요청을 보내기 위해 XMLHttpRequest 개체의 open() 및 send() 메서드를 사용합니다:

xmlhttp.open("GET","ajax_info.txt ",true) ;
xmlhttp.send();

MethodDescription
open(method,url,async)

Sp 요청 유형 및 URL을 명시합니다. 그리고 이를 비동기적으로 처리할지 여부를 묻습니다.

  • method: 요청 유형, GET 또는 POST

  • url: 서버의 파일 위치

  • async: true(비동기) 또는 false(동기)

send(string)

서버에 요청을 보냅니다.

  • string: POST 요청에만 해당



GET 또는 POST?

POST에 비해 GET은 더 간단하고 빠르며 대부분의 경우에 작동합니다.

단, 다음과 같은 경우에는 POST 요청을 이용해 주시기 바랍니다.

  • 캐시 파일을 사용할 수 없는 경우(서버의 파일이나 데이터베이스를 업데이트하는 경우)

  • 서버에 대용량 데이터를 보내는 경우(POST에는 데이터 크기 제한이 없습니다) ) is ost 포스트는 알 수없는 문자를 포함하는 사용자 입력을 보낼 때 얻는 것보다 더 안정적이고 신뢰할 수 있습니다. 온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 누르세요.

  • 위 예에서는 캐시된 결과를 얻을 수 있습니다.

    이를 방지하려면 URL에 고유 ID를 추가하세요.

Instance

<html><!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("GET","/try/ajax/demo_get.php",true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>

</body>
</html>

Run Instance»

온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요.

원하는 경우 GET 방식으로 정보를 보내려면 URL에 정보를 추가하세요:

Instance

<html><!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","/try/ajax/demo_get.php?t=" + Math.random(),true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<p>Click the button several times to see if the time changes, or if the file is cached.</p>
<div id="myDiv"></div>

</body>
</html>

Run Instance»

온라인 인스턴스를 보려면 "Run Instance" 버튼을 클릭하세요


POST Request 간단한 POST 요청:

예제

<html><!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","/try/ajax/demo_get2.php?fname=Henry&lname=Ford",true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>
 
</body>
</html>

예제 실행»
온라인 예제를 보려면 "예제 실행" 버튼을 클릭하세요.
HTML 형식과 같은 데이터를 POST해야 하는 경우 setRequestHeader를 사용하세요. () HTTP 헤더를 추가합니다. 그런 다음 send() 메서드에 보내려는 데이터를 지정합니다.

Instance

<html><!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","/try/ajax/demo_post.php",true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>
 
</body>
</html>

Run Instance»

온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요


Method

Description

setRequestHeader(

header,value

)

요청에 HTTP 헤더를 추가합니다.

header
: 헤더의 이름을 지정합니다value

url - 서버에 있는 파일

open() 메소드의 url 매개변수는 서버에 있는 파일의 주소입니다:

xmlhttp.open("GET","ajax_test.html",true);

파일은 .txt 및 .xml과 같은 모든 유형의 파일이거나 .asp 및 .php(응답을 다시 보내기 전에 서버에서 작업을 수행할 수 있음)와 같은 서버 스크립트 파일일 수 있습니다.


Async - 참 또는 거짓?

AJAX는 비동기 JavaScript 및 XML을 나타냅니다.

XMLHttpRequest 개체를 AJAX에 사용하려면 해당 open() 메서드의 async 매개 변수를 true로 설정해야 합니다.

xmlhttp.open("GET","ajax_test.html",true);

웹 개발의 경우 개발자에게 비동기 요청을 보내는 것은 큰 개선입니다. 서버에서 수행되는 많은 작업에는 시간이 많이 걸립니다. AJAX 이전에는 이로 인해 애플리케이션이 중단되거나 중지될 수 있었습니다.

AJAX를 사용하면 JavaScript는 서버의 응답을 기다릴 필요가 없지만 다음과 같은 이점이 있습니다.

  • 서버 응답을 기다리는 동안 다른 스크립트를 실행하세요

  • 준비가 되면 응답을 처리하세요


Async =true

async=true를 사용하는 경우 onreadystatechange 이벤트에서 준비 상태에 대한 응답으로 실행될 함수를 지정하십시오.

Instance

<html><!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","/try/ajax/demo_post2.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>
 
</body>
</html>

인스턴스 실행»

"인스턴스 실행"을 클릭합니다. 버튼을 누르면 온라인 인스턴스를 볼 수 있습니다

다음 장에서 onreadystatechange에 대해 자세히 알아볼 것입니다.


Async = false

async=false를 사용해야 하는 경우 open() 메서드의 세 번째 매개변수를 false로 변경하세요.

<html><!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>

<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div>
<button type="button" onclick="loadXMLDoc()">修改内容</button>

</body>
</html>

async=false 사용을 권장하지 않지만 일부 작은 요청의 경우에는 또한 괜찮습니다.

기억하세요. JavaScript는 실행을 계속하기 전에 서버 응답이 준비될 때까지 기다립니다. 서버가 사용량이 많거나 느리면 애플리케이션이 정지되거나 중지됩니다.

참고: async=false를 사용하는 경우 onreadystatechange 함수를 작성하지 말고 send() 문 뒤에 코드를 입력하세요.

Instance

xmlhttp.open(&quot;GET&quot;,&quot;test1.txt&quot;,false);

Run Instance»

"실행"을 클릭하세요. 온라인 예시를 보려면 "예제" 버튼을 클릭하세요


: 헤더의 값을 지정합니다