AJAX = 비동기 JavaScript 및 XML(asynchronous JavaScript and XML). 다음 기사에서는 Ajax 원리 및 코드 캡슐화에 대한 관련 정보를 주로 소개합니다. 도움이 필요한 친구들이 참고할 수 있으니 아래를 살펴보겠습니다.
머리말
사실 AJAX의 내부 구현은 크게 어렵지 않습니다. 주로 XMLHttpRequest라는 객체를 사용하는데, 이 객체는 기존 브라우저에서 지원됩니다.
전체 AJAX 구현의 기본이자 브라우저가 백그라운드에서 서버와 데이터를 교환하는 데 사용하는 개체라고 할 수 있습니다. 여기에는 AJAX와 부분 페이지 새로 고침 기술이 있습니다!
이 글은 주로 Ajax 원리와 코드 캡슐화에 대한 관련 내용을 소개하고 참고 및 학습을 위해 공유합니다. 아래에서는 자세히 설명하지 않겠습니다. 자세한 소개를 살펴보겠습니다.
샘플 코드
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){ // to do... } } xmlhttp.open("GET","test1.txt",true); xmlhttp.send();
단계:
1.
XMLHttpRequest 개체 생성을 위한 구문:
var = new XMLHttpRequest();
Internet Explorer의 이전 버전(IE5 및 IE6)은 ActiveX 개체를 사용합니다.
var = new ActiveXObject("Microsoft.XMLHTTP");
2, 연결하고 보냅니다.
2.1 open() 함수의 세 가지 매개변수: 요청 메소드, 요청 주소, 비동기 요청 여부
2.2 GET 요청 메소드는 URL 매개변수를 통해 데이터를 서버에 제출합니다. data as 전송 매개변수는 서버에 제출됩니다
2.3. POST 요청에서 데이터를 전송하기 전에 양식 제출의 내용 유형을 설정해야 합니다
2.3. encodeURIComponent()
메서드 인코딩. 실제로 매개변수 목록 key=value 형식에서는 키와 값에 특수 문자가 포함되므로 인코딩해야 합니다. 요청이 이루어질 때마다 v=xx라는 문자열이 매개변수 목록에 입력됩니다. 이는 캐싱을 거부하고 매번 서버에 직접 요청하는 것입니다. encodeURIComponent()
方法进行编码,实际上在参数列表key=value的形式中,key 和 value 都需要进行编码,因为会包含特殊字符。每次请求的时候都会在参数列表中拼入一个 v=xx 的字符串,这样是为了拒绝缓存,每次都直接请求到服务器上。
3、接收。
3.1、接收到响应后,响应的数据会自动填充XHR对象,相关属性如下
responseText:响应返回的主体内容,为字符串类型;
responseXML:如果响应的内容类型是 "text/xml" 或 "application/xml",这个属性中将保存着相应的xml 数据,是 XML 对应的 document 类型;
status:响应的HTTP状态码;
statusText:HTTP状态的说明
3.2、XHR对象的readyState属性表示请求/响应过程的当前活动阶段,这个属性的值如下
0 --> 未初始化,尚未调用open()
方法;
1 --> 启动,调用了open()
方法,未调用send()
方法;
2 --> 发送,已经调用了send()
方法,未接收到响应;
3 --> 接收,已经接收到部分响应数据;
4 --> 完成,已经接收到全部响应数据;
只要 readyState 的值变化,就会调用 readystatechange 事件,(其实为了逻辑上通顺,可以把readystatechange放到send之后,因为send时请求服务器,会进行网络通信,需要时间,在send之后指定readystatechange事件处理程序也是可以的,我一般都是这样用,但为了规范和跨浏览器兼容性,还是在open之前进行指定吧)。
3.3、在readystatechange事件中,先判断响应是否接收完成,然后判断服务器是否成功处理请求,xhr.status
3.받습니다. 3.1 응답을 받은 후 응답 데이터는 자동으로 "text/xml" 또는 "application/xml"을 채웁니다. 이 속성은 XML에 해당하는 문서 유형인 해당 xml 데이터를 저장합니다.
status: 응답 HTTP 상태 코드
send()
메서드가 호출되지 않았습니다. 🎜🎜🎜2 --> Send, send()
메서드가 호출되었으나 응답이 수신되지 않았습니다. 🎜🎜🎜3 --> 수신, 응답 데이터의 일부가 수신됨 🎜🎜🎜4 --> 완료, 모든 응답 데이터가 수신됨 ;🎜🎜🎜readyState 값이 변경되는 한, (실제로 논리적인 원활함을 위해 send 이후에 Readystatechange를 배치할 수 있습니다. 왜냐하면 전송할 때 서버에 요청하면 네트워크 통신이 발생하고 시간이 걸리기 때문입니다. 전송 후에 Readystatechange를 지정하십시오. 이벤트 핸들러도 가능합니다. 저는 주로 사용합니다. 하지만 표준화와 브라우저 간 호환성을 위해 열기 전에 지정하는 것이 좋습니다. 🎜🎜3.3.readystatechange 이벤트에서는 먼저 응답이 수신되었는지 확인한 다음 서버가 요청을 성공적으로 처리했는지 확인합니다. xhr.status
는 2로 시작하는 상태 코드입니다. , 304는 캐시에서 가져오기를 의미합니다. 위 코드는 각 요청에 임의의 숫자를 추가하므로 캐시에서 값을 가져오지 않으므로 이 상태를 판단할 필요가 없습니다. 🎜🎜🎜🎜🎜캡슐화 Ajax 방법: 🎜🎜🎜🎜🎜🎜ajax({ url: "./test.php", type: "POST", data: { name: "abc", age: 18 }, dataType: "json", success: function (response, xml) { // 执行成功回调 }, fail: function (status) { // 执行失败回调 } }); function ajax(options) { options = options || {}; options.type = (options.type || "GET").toUpperCase(); options.dataType = options.dataType || "json"; var params = formatParams(options.data); // 创建对象 if (window.XMLHttpRequest) { var xhr = new XMLHttpRequest(); } else { var xhr = new ActiveXObject('Microsoft.XMLHTTP'); } //接收 - 第三步 xhr.onreadystatechange = function () { if (xhr.readyState == 4) { var status = xhr.status; if (status >= 200 && status < 300) { options.success && options.success(xhr.responseText,xhr.responseXML); } else { options.fail && options.fail(status); } } } //连接 和 发送 - 第二步 if (options.type == "GET") { xhr.open("GET", options.url + "?" + params, true); xhr.send(null); } else if (options.type == "POST") { xhr.open("POST", options.url, true); //设置表单提交时的内容类型 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send(params); } //格式化参数 function formatParams(data) { var arr = []; for (var name in data) { arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name])); } arr.push(("v=" + Math.random()).replace(".","")); return arr.join("&"); }
위 내용은 Ajax 원리 및 코드 캡슐화 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.

예, JavaScript의 엔진 코어는 C로 작성되었습니다. 1) C 언어는 효율적인 성능과 기본 제어를 제공하며, 이는 JavaScript 엔진 개발에 적합합니다. 2) V8 엔진을 예를 들어, 핵심은 C로 작성되며 C의 효율성 및 객체 지향적 특성을 결합하여 C로 작성됩니다.

JavaScript는 웹 페이지의 상호 작용과 역학을 향상시키기 때문에 현대 웹 사이트의 핵심입니다. 1) 페이지를 새로 고치지 않고 콘텐츠를 변경할 수 있습니다. 2) Domapi를 통해 웹 페이지 조작, 3) 애니메이션 및 드래그 앤 드롭과 같은 복잡한 대화식 효과를 지원합니다. 4) 성능 및 모범 사례를 최적화하여 사용자 경험을 향상시킵니다.

C 및 JavaScript는 WebAssembly를 통한 상호 운용성을 달성합니다. 1) C 코드는 WebAssembly 모듈로 컴파일되어 컴퓨팅 전력을 향상시키기 위해 JavaScript 환경에 도입됩니다. 2) 게임 개발에서 C는 물리 엔진 및 그래픽 렌더링을 처리하며 JavaScript는 게임 로직 및 사용자 인터페이스를 담당합니다.

JavaScript는 웹 사이트, 모바일 응용 프로그램, 데스크탑 응용 프로그램 및 서버 측 프로그래밍에서 널리 사용됩니다. 1) 웹 사이트 개발에서 JavaScript는 HTML 및 CSS와 함께 DOM을 운영하여 동적 효과를 달성하고 jQuery 및 React와 같은 프레임 워크를 지원합니다. 2) 반응 및 이온 성을 통해 JavaScript는 크로스 플랫폼 모바일 애플리케이션을 개발하는 데 사용됩니다. 3) 전자 프레임 워크를 사용하면 JavaScript가 데스크탑 애플리케이션을 구축 할 수 있습니다. 4) node.js는 JavaScript가 서버 측에서 실행되도록하고 동시 요청이 높은 높은 요청을 지원합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

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

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

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
