이 글에서는 ajax의 비동기 호출 및 부분 새로 고침을 구현하는 기본 단계를 소개합니다. 이제 내용을 모두가 더 명확하게 이해할 수 있도록 예제와 설명이 있습니다. AJAX 비동기 호출과 부분 새로 고침을 완전히 구현하려면 일반적으로 다음 단계가 필요합니다.
(1) XMLHttpRequest 개체를 만듭니다. 즉, 비동기 호출 개체를 만듭니다. (2) 새 HTTP 요청을 만들고 지정합니다. HTTP 요청 방식, URL, 검증 정보 .
(3) HTTP 요청 상태 변경에 대한 응답 기능 설정 . (4) HTTP 요청 보내기 . (5) 반환된 데이터 얻기 비동기 호출 .V (6) JavaScript 및 DOM을 사용하여 로컬 새로 고침 달성 .
1, xmlhttprequest 객체 생성브라우저에서 사용하는 호출 객체가 다르면 IE 브라우저에서 XMLHTTP에 사용되는 비동기 호출도 다릅니다. 구성 요소는 XMLHTTP 구성 요소 XMLHttpRequest 개체에서 사용되는 반면 Netscape 및 Firefox 브라우저에서는 XMLHttpRequest 구성 요소가 직접 사용됩니다. 따라서 브라우저마다 XMLHttpRequest 객체를 생성하는 방법이 다릅니다.
IE 브라우저에서 XMLHttpRequest 객체를 생성하는 방법은 다음과 같습니다. var xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
생성 방법은 다음과 같습니다. Netscape 브라우저의 XMLHttpRequest 객체는 다음과 같습니다.
var xmlHttpRequest = new XMLHttpRequest();
사용자가 어떤 브라우저를 사용하고 있는지 확인할 수 없으므로 XMLHttpRequest 객체를 생성할 때 위의 두 가지 방법을 모두 추가하는 것이 가장 좋습니다. :
<html> <head> <title>创建XMLHttpRequest对象</title> <script language = "javascript" type = "text/javascript"> <!-- var xmlHttpRequest; //定义一个变量,用于存放XMLHttpRequest对象 function createXMLHttpRequest() //创建XMLHttpRequest对象的方法 { if(window.ActiveXObject) //判断是否是IE浏览器 { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); //创建IE浏览器中的XMLHttpRequest对象 } else if(window.XMLHttpRequest) //判断是否是Netscape等其他支持XMLHttpRequest组件的浏览器 { xmlHttpRequest = new XMLHttpRequest(); //创建其他浏览器上的XMLHttpRequest对象 } } --> </script> createXMLHttpRequst(); //调用创建对象的方法 </head> <body> </body> </html>
"if(window.ActiveXObject)"는 IE 브라우저 사용 여부를 결정하는 데 사용됩니다. ActiveXOject는 Windows 개체의 표준 속성이 아니라 IE 브라우저의 고유 속성으로, 사용 여부를 결정하는 데 사용할 수 있습니다. browser ActiveX 컨트롤을 지원합니다. 일반적으로 IE 브라우저 또는 IE 브라우저 기반 브라우저만 ActiveX 컨트롤을 지원할 수 있습니다.
"else if(window.XMLHttpRequest)"는 일부 브라우저가 ActiveX 컨트롤이나 ActiveX 컨트롤을 모두 지원하지 못하도록 하는 것입니다. XMLHttpRequest 구성 요소에서 XMLHttpRequest는 창 개체의 표준 속성은 아니지만 브라우저가 XMLHttpRequest 구성 요소를 지원하는지 확인하는 데 사용할 수 있습니다.
브라우저가 ActiveX 컨트롤이나 XMLHttpRequest 구성 요소를 지원하지 않으면 xmlHttpRequest 변수에 값을 할당합니다.
2. HTTP 요청 만들기XMLHttpRequest 개체를 만든 후 일반적으로 XMLHttpRequest 개체가 데이터를 얻으려는 위치를 설명하는 HTTP 요청을 만들어야 합니다. 웹사이트의 데이터일 수도 있고 로컬의 다른 파일에 있는 데이터일 수도 있습니다. > 생성할 수 있습니다.
method:该参数用于指定HTTP的请求方法,一共有get、post、head、put、delete五种方法,常用的方法为get和post。
URL:该参数用于指定HTTP请求的URL地址,可以是绝对URL,也可以是相对URL。
flag:该参数为可选参数,参数值为布尔型。该参数用于指定是否使用异步方式。true表示异步方式、false表示同步方式,默认为true。
name:该参数为可选参数,用于输入用户名。如果服务器需要验证,则必须使用该参数。
password:该参数为可选参数,用于输入密码。如果服务器需要验证,则必须使用该参数。通常可以使用以下代码来访问一个网站文件的内容。
xmlHttpRequest.open("get","http://www.aspxfans.com/BookSupport/JavaScript/ajax.htm",true);
或者使用以下代码来访问一个本地文件内容:
xmlHttpRequest.open("get","ajax.htm",true);
注意:如果HTML文件放在Web服务器上,在Netscape浏览器中的JavaScript安全机制不允许与本机之外的主机进行通信。也就是说,使用open()方法只能打开与HTML文件在同一个服务器上的文件。而在IE浏览器中则无此限制(虽然可以打开其他服务器上的文件,但也会有警告提示)。
3、设置响应HTTP请求状态变化的函数
创建完HTTP请求之后,应该就可以将HTTP请求发送给Web服务器了。然而,发送HTTP请求的目的是为了接收从服务器中返回的数据。从创建XMLHttpRequest对象开始,到发送数据、接收数据、XMLHttpRequest对象一共会经历以下5中状态。
⑴未初始化状态。在创建完XMLHttpRequest对象时,该对象处于未初始化状态,此时XMLHttpRequest对象的readyState属性值为0。
⑵初始化状态。在创建完XMLHttpRequest对象后使用open()方法创建了HTTP请求时,该对象处于初始化状态。此时XMLHttpRequest对象的readyState属性值为1。
⑶发送数据状态。在初始化XMLHttpRequest对象后,使用send()方法发送数据时,该对象处于发送数据状态,此时XMLHttpRequest对象的readyState属性值为2。
⑷接收数据状态。Web服务器接收完数据并进行处理完毕之后,向客户端传送返回的结果。此时,XMLHttpRequest对象处于接收数据状态,XMLHttpRequest对象的readyState属性值为3。
⑸完成状态。XMLHttpRequest对象接收数据完毕后,进入完成状态,此时XMLHttpRequest对象的readyState属性值为4。此时接收完毕后的数据存入在客户端计算机的内存中,可以使用responseText属性或responseXml属性来获取数据。
只有在XMLHttpRequest对象完成了以上5个步骤之后,才可以获取从服务器端返回的数据。因此,如果要获得从服务器端返回的数据,就必须要先判断XMLHttpRequest对象的状态。
XMLHttpRequest对象可以响应readystatechange事件,该事件在XMLHttpRequest对象状态改变时(也就是readyState属性值改变时)激发。因此,可以通过该事件调用一个函数,并在该函数中判断XMLHttpRequest对象的readyState属性值。如果readyState属性值为4则使用responseText属性或responseXml属性来获取数据。具体代码如下所示:
//设置当XMLHttpRequest对象状态改变时调用的函数,注意函数名后面不要添加小括号 xmlHttpRequest.onreadystatechange = getData; //定义函数 function getData() { //判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成 if(xmlHttpRequest.readyState == 4) { //设置获取数据的语句 } }
4、设置获取服务器返回数据的语句
如果XMLHttpRequest对象的readyState属性值等于4,表示异步调用过程完毕,就可以通过XMLHttpRequest对象的responseText属性或responseXml属性来获取数据。
但是,异步调用过程完毕,并不代表异步调用成功了,如果要判断异步调用是否成功,还要判断XMLHttpRequest对象的status属性值,只有该属性值为200,才表示异步调用成功,因此,要获取服务器返回数据的语句,还必须要先判断XMLHttpRequest对象的status属性值是否等于200,如以下代码所示:
if(xmlHttpRequst.status == 200) { //使用以下语句将返回结果以字符串形式输出 document.write(xmlHttpRequest.responseText); //或者使用以下语句将返回结果以XML形式输出 //document.write(xmlHttpRequest.responseXML); }
注意:如果HTML文件不是在Web服务器上运行,而是在本地运行,则xmlHttpRequest.status的返回值为0。因此,如果该文件在本地运行,则应该加上xmlHttpRequest.status == 0的判断。
通常将以上代码放在响应HTTP请求状态变化的函数体内,如以下代码所示:
//设置当XMLHttpRequest对象状态改变时调用的函数,注意函数名后面不要添加小括号 xmlHttpRequest.onreadystatechange = getData; //定义函数 function getData() { //判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成 if(xmlHttpRequest.readyState==4) { //设置获取数据的语句 if(xmlHttpRequest.status == 200 || xmlHttpRequest.status == 0) { //使用以下语句将返回结果以字符串形式输出 document.write(xmlHttpRequest.responseText); //或者使用以下语句将返回结果以XML形式输出 //docunment.write(xmlHttpRequest.responseXML); } } }
5、发送HTTP请求
在经过以上几个步骤的设置之后,就可以将HTTP请求发送到Web服务器上去了。发送HTTP请求可以使用XMLHttpRequest对象的send()方法,其语法代码如下所示:
XMLHttpRequest.send(data)
其中data是个可选参数,如果请求的数据不需要参数,即可以使用null来替代。data参数的格式与在URL中传递参数的格式类似,以下代码为一个send()方法中的data参数的示例:
name=myName&value=myValue
只有在使用send()方法之后,XMLHttpRequest对象的readyState属性值才会开始改变,也才会激发readystatechange事件,并调用函数。
6、局部更新
在通过Ajax的异步调用获得服务器端数据之后,可以使用JavaScript或DOM来将网页中的数据进行局部更新。常用的局部更新的方式有以下3种:
⑴表单对象的数据更新
表单对象的数据更新,通常只要更改表单对象的value属性值,其语法代码如下所示:
FormObject.value = "新数值"
有关表单对象的数据更新的示例如以下代码所示:
<html> <head> <title>局部更新</title> <script language = "javascript" type = "text/javascript"> <!-- function changeData() { document.myForm.myText.value = "更新后的数据" } --> </head> <body> <form name = "myForm"> <input type = "text" value = "原数据" name = "myText"> <input type = "button" value = "更新数据" onclick = "changeData()"> </form> </body> </html>
⑵IE浏览器中标签间文本的更新
在HTML代码中,除了表单元素之外,还有很多其他的元素,这些元素的开始标签与结束标签之间往往也会有一点文字(如以下代码所示),对这些文字的更新,也是局部更新的一部分。
文字
文字
文字
文字
文字
在IE浏览器中,innerText或innerHTML属性可以用来更改标签间文本的内容。其中innerText属性用于更改开始标签与结束标签之间的纯文本内容,而innerHTML属性用于更改HTML内容。如以下代码所示:
<html> <head> <title>局部更新</title> <script language = "javascript" type = "text/javascript"> <!-- function changeData() { myp.innerText = "更新后的数据"; } --> </script> </head> <body> <p id = "mype">原数据</p> <input type = "button" value = "更新数据" onclick = "changeData()"> </body> </html>
⑶DOM技术的局部刷新
innerText和innerHTML两个属性都是IE浏览器中的属性,在Netscape浏览器中并不支持该属性。但无论是IE浏览器还是Netscape浏览器,都支持DOM。在DOM中,可以修改标签间的文本内容。(想看更多就到PHP中文网AJAX开发手册栏目中学习)
在DOM中,将HTML文档中的每一对开始标签和结束标签都看成是一个节点。例如HTML文档中有一个标签如下所示,那么该标签在DOM中称之为一个“节点”。
原数据
在DOM中使用getElementById()方法可以通过id属性值来查找该标签(或者说是节点),如以下语句所示:
var node = document.getElementById("myp");
注意:在一个HTML文档中,每个标签中的id属性值是不能重复的。因此,使用getElementById()方法获得的节点是唯一的。
在DOM中,认为开始标签与结束标签之间的文本是该节点的子节点,而firstChild属性可以获得一个节点下的第1个子节点。如以下代码可以获得
节点下的第1个子节点,也就是
标签与
标签之间的文字节点。node.firstChild
注意,以上代码获得的是文字节点,而不是文字内容。如果要获得节点的文字内容,则要使用节点的nodeValue属性。通过设置nodeValue属性值,可以改变文字节点的文本内容。完整的代码如下所示:
<html> <head> <title>局部更新</title> <script language = "javascript" type = "text/javascript"> <!-- function changeData() { //查找标签(节点) var node = document.getElementById("myp"); //在DOM中标签中的文字被认为是标签中的子节点 //节点的firstChild属性为该节点下的第1个子节点 //nodeValue属性为节点的值,也就是标签中的文本值 node.firstChild.nodeValue = "更新后的数据"; } --> </script> </head> </html>
注意:目前主流的浏览器都支持DOM技术的局部刷新。
7、
完整的AJAX实例 <html> <head> <title>AJAX实例</title> <script language="javascript" type="text/javascript"> <!-- var xmlHttpRequest; //定义一个变量用于存放XMLHttpRequest对象 //定义一个用于创建XMLHttpRequest对象的函数 function createXMLHttpRequest() { if(window.ActiveXObject) { //IE浏览器的创建方式 xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }else if(windew.XMLHttpRequest) { //Netscape浏览器中的创建方式 xmlHttpRequest = new XMLHttpRequest(); } } //响应HTTP请求状态变化的函数 function httpStateChange() { //判断异步调用是否完成 if(xmlHttpRequest.readyState == 4) { //判断异步调用是否成功,如果成功开始局部更新数据 if(xmlHttpRequest.status == 200||xmlHttpRequest.status == 0) { //查找节点 var node = document.getElementById("myp"); //更新数据 node.firstChild.nodeValue = xmlHttpRequest .responseText; } else { //如果异步调用未成功,弹出警告框,并显示出错信息 alert("异步调用出错/n返回的HTTP状态码为:"+xmlHttpRequest.status + "/n返回的HTTP状态信息为:" + xmlHttpRequest.statusText); } } } //异步调用服务器段数据 function getData(name,value) { //创建XMLHttpRequest对象 createXMLHttpRequest(); if(xmlHttpRequest!=null) { //创建HTTP请求 xmlHttpRequest.open("get","ajax.text",true) //设置HTTP请求状态变化的函数 xmlHttpRequest.onreadystatechange = httpStateChange; //发送请求 xmlHttpRequest.send(null); } } --> </script> </head> <body> <p id="myp">原数据</p> <input type = "button" value = "更新数据" onclick = "getData()"> </body> </html>
本篇文章到这就结束了(想看更多就到PHP中文网AJAX使用手册栏目中学习),有问题的可以在下方留言提问。
위 내용은 Ajax에서 비동기 호출을 구현하는 방법은 무엇입니까? Ajax 비동기 호출 및 부분 새로 고침 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

JavaScript 프레임 워크의 힘은 개발 단순화, 사용자 경험 및 응용 프로그램 성능을 향상시키는 데 있습니다. 프레임 워크를 선택할 때 : 1. 프로젝트 규모와 복잡성, 2. 팀 경험, 3. 생태계 및 커뮤니티 지원.

서론 나는 당신이 이상하다는 것을 알고 있습니다. JavaScript, C 및 Browser는 정확히 무엇을해야합니까? 그들은 관련이없는 것처럼 보이지만 실제로는 현대 웹 개발에서 매우 중요한 역할을합니다. 오늘 우리는이 세 가지 사이의 밀접한 관계에 대해 논의 할 것입니다. 이 기사를 통해 브라우저에서 JavaScript가 어떻게 실행되는지, 브라우저 엔진의 C 역할 및 웹 페이지의 렌더링 및 상호 작용을 유도하기 위해 함께 작동하는 방법을 알게됩니다. 우리는 모두 JavaScript와 브라우저의 관계를 알고 있습니다. JavaScript는 프론트 엔드 개발의 핵심 언어입니다. 브라우저에서 직접 실행되므로 웹 페이지를 생생하고 흥미롭게 만듭니다. 왜 Javascr

Node.js는 크림 덕분에 효율적인 I/O에서 탁월합니다. 스트림은 메모리 오버로드를 피하고 큰 파일, 네트워크 작업 및 실시간 애플리케이션을위한 메모리 과부하를 피하기 위해 데이터를 점차적으로 처리합니다. 스트림을 TypeScript의 유형 안전과 결합하면 Powe가 생성됩니다

파이썬과 자바 스크립트 간의 성능과 효율성의 차이는 주로 다음과 같이 반영됩니다. 1) 해석 된 언어로서, 파이썬은 느리게 실행되지만 개발 효율이 높고 빠른 프로토 타입 개발에 적합합니다. 2) JavaScript는 브라우저의 단일 스레드로 제한되지만 멀티 스레딩 및 비동기 I/O는 Node.js의 성능을 향상시키는 데 사용될 수 있으며 실제 프로젝트에서는 이점이 있습니다.

JavaScript는 1995 년에 시작하여 Brandon Ike에 의해 만들어졌으며 언어를 C로 실현했습니다. 1.C Language는 JavaScript의 고성능 및 시스템 수준 프로그래밍 기능을 제공합니다. 2. JavaScript의 메모리 관리 및 성능 최적화는 C 언어에 의존합니다. 3. C 언어의 크로스 플랫폼 기능은 자바 스크립트가 다른 운영 체제에서 효율적으로 실행하는 데 도움이됩니다.

JavaScript는 브라우저 및 Node.js 환경에서 실행되며 JavaScript 엔진을 사용하여 코드를 구문 분석하고 실행합니다. 1) 구문 분석 단계에서 초록 구문 트리 (AST)를 생성합니다. 2) 컴파일 단계에서 AST를 바이트 코드 또는 기계 코드로 변환합니다. 3) 실행 단계에서 컴파일 된 코드를 실행하십시오.

Python 및 JavaScript의 미래 추세에는 다음이 포함됩니다. 1. Python은 과학 컴퓨팅 분야에서의 위치를 통합하고 AI, 2. JavaScript는 웹 기술의 개발을 촉진하고, 3. 교차 플랫폼 개발이 핫한 주제가되고 4. 성능 최적화가 중점을 둘 것입니다. 둘 다 해당 분야에서 응용 프로그램 시나리오를 계속 확장하고 성능이 더 많은 혁신을 일으킬 것입니다.

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

드림위버 CS6
시각적 웹 개발 도구

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
