xmlhttprequest vs ajax의 Fetch API
JavaScript에서 Fetch API와 XMLHTTPREQUEST는 모두 HTTP 요청을하는 데 사용되지만 Fetch API는 일반적으로 약속을 사용하기 때문에 더 강력하고 유연한 것으로 간주되므로 코드 및 오류 처리를 단순화합니다. 그러나 모든 브라우저가 Fetch API, 특히 이전 브라우저를 지원하는 것은 아닙니다.
-
Fetch API는 모든 XHR 기능을 지원하지 않으며 일부 옵션이 번거롭기 때문에 Ajax 기술을 완전히 대체하지는 않습니다. 또한 시간 초과를 지원하지 않으므로 오류 캡처 구현이 더 복잡합니다.
-
Fetch API에는 한계가 있지만 JavaScript에서 HTTP 요청을하는 미래 방향입니다. 그러나 비교적 새롭고 끊임없이 변화하기 때문에 개발자는 향후 몇 년 동안주의해서 사용해야합니다. - xmlhttprequest와 fetch api
- >
ajax는 비동기 JavaScript 및 XML의 약어입니다. "Async"는 확실히 정확하지만 :
xmlhttprequest에 대한 심층적 인 이해
다음 JavaScript 코드는 XMLHTTPREQUEST (일반적으로 XHR로 약어)를 사용하여
https://www.php.cn/link/f589A241141007EB225CD68EED7BC06C :에 대한 기본 HTTP GET 요청을 발행합니다.let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c');
// 请求状态更改事件
xhr.onreadystatechange = function() {
// 请求完成?
if (xhr.readyState !== 4) return;
if (xhr.status === 200) {
// 请求成功 - 显示响应
console.log(xhr.responseText);
}
else {
// 请求错误
console.log('HTTP error', xhr.status, xhr.statusText);
}
};
// 开始请求
xhr.send();
로그인 후 복사로그인 후 복사
xmlhttprequest 객체에는 다른 많은 옵션, 이벤트 및 응답 속성이 있습니다. 예를 들어, 밀리 초의 시간 초과를 설정하고 감지 할 수 있습니다.
진행 이벤트는 장기 실행 파일 업로드를보고 할 수 있습니다
의 옵션 수는 눈부신 일 수 있으며 이전 버전의 XMLHTTPREQUEST에는 크로스 브라우저 불일치가 있습니다. 따라서 대부분의 라이브러리 및 프레임 워크는 jQuery.ajax () 메소드와 같은 복잡성을 처리하기위한 Ajax 래퍼 기능을 제공합니다.
// 设置超时
xhr.timeout = 3000; // 3 秒
xhr.ontimeout = () => console.log('timeout', xhr.responseURL);
로그인 후 복사
<<> 빠른 Fetch에 대해 배우십시오
Fetch API는 XMLHTTPREQUEST의 현대적인 대안입니다. 공통 헤더, 요청 및 응답 인터페이스는 일관성을 제공하는 반면, Promise는 콜백없이 더 쉽게 체인 및 비동기/대기 할 수 있습니다. 위의 XHR 예제는 더 간단한 페치 기반 코드로 변환 될 수 있으며, 이는 반환 된 JSON을 구문 분석 할 수도 있습니다.
Fetch는 간단하고 우아하며 이해하기 쉽고 PWA 서비스 작업자에게 널리 사용됩니다. 고대 xmlhttprequest 대신 사용하지 않는 이유는 무엇입니까? // 上传进度
xhr.upload.onprogress = p => {
console.log( Math.round((p.loaded / p.total) * 100) + '%') ;
};
로그인 후 복사 <<>
불행히도 웹 개발은 결코 그렇게 간단하지 않습니다. Fetch는 Ajax 기술을 완전히 대체하지 않았습니다
<🎜 🎜> <<> 브라우저 지원 <🎜 🎜>
Fetch API는 꽤 잘 지원되지만 모든 버전의 Internet Explorer에서는 실패합니다. 2017 년 이전에 Chrome, Firefox 및 Safari 버전을 사용하는 사용자도 문제를 경험할 수 있습니다. 이 사용자는 사용자 기반의 작은 부분 만 구성하거나 주요 고객 일 수 있습니다. 코딩을 시작하기 전에 확인하십시오!
<<>
또한, 페치 API는 비교적 새롭고 성숙한 XHR 객체보다 더 연속적인 변화를받습니다. 이러한 업데이트는 코드를 중단하지는 않지만 향후 몇 년 동안 일부 유지 보수가 필요할 것으로 예상됩니다. // jQuery Ajax
$.ajax('https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c')
.done(data => console.log(data))
.fail((xhr, status) => console.log('error:', status));
로그인 후 복사
<<> 쿠키는 기본적으로 포함되지 않습니다
xmlhttprequest와 달리 모든 페치 구현이 쿠키를 보내는 것은 아니므로 응용 프로그램의 인증이 실패 할 수 있습니다. 이 문제는 두 번째 매개 변수에 전달 된 초기화 옵션을 변경하여 해결할 수 있습니다.
<<> 오류는 거부되지 않습니다 <🎜 🎜>
<,> 놀랍게도, HTTP 오류 (예 : 404 페이지 또는 500 내부 서버 오류)는 페치 약속이 거부되지 않습니다. 일반적으로 응답을 구문 분석하고 설정합니다. OK 상태를 False로 설정합니다.
할인은 요청을 완료 할 수없는 경우에만 발생합니다 (예 : 네트워크 고장). 이렇게하면 오류 캡처 구현이 더욱 복잡해집니다.
<🎜 🎜> <<> 타임 아웃은 지원되지 않습니다 fetch(
'https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c',
{ method: 'GET' }
)
.then( response => response.json() )
.then( json => console.log(json) )
.catch( error => console.error('error:', error) );
로그인 후 복사
페치는 타임 아웃을 지원하지 않으며 요청은 선택한 브라우저가 지속됩니다. 예를 들어 다른 약속으로 페치를 래핑하려면 추가 코드가 필요합니다.
<🎜 🎜> <<> 중단 페치
xhr 요청은 xhr.abort ()를 사용하여 쉽게 종료 할 수 있으며 필요한 경우 xhr.onabort 함수를 사용하여 이러한 이벤트를 감지 할 수 있습니다.
몇 년 동안, 페치 중단은 불가능했지만 이제는 AbortController API를 구현하는 브라우저에서 지원됩니다. 이렇게하면 페치 초기화 객체로 전달 될 수있는 신호가 트리거됩니다.
페치는 컨트롤러를 호출하여 중단 될 수 있습니다. abort (); 약속은 거부되므로 .catch () 함수가 호출됩니다.
let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c');
// 请求状态更改事件
xhr.onreadystatechange = function() {
// 请求完成?
if (xhr.readyState !== 4) return;
if (xhr.status === 200) {
// 请求成功 - 显示响应
console.log(xhr.responseText);
}
else {
// 请求错误
console.log('HTTP error', xhr.status, xhr.statusText);
}
};
// 开始请求
xhr.send();
로그인 후 복사로그인 후 복사 진보 없음
let xhr = new XMLHttpRequest(); xhr.open('GET', 'https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c'); // 请求状态更改事件 xhr.onreadystatechange = function() { // 请求完成? if (xhr.readyState !== 4) return; if (xhr.status === 200) { // 请求成功 - 显示响应 console.log(xhr.responseText); } else { // 请求错误 console.log('HTTP error', xhr.status, xhr.statusText); } }; // 开始请求 xhr.send();
// 设置超时 xhr.timeout = 3000; // 3 秒 xhr.ontimeout = () => console.log('timeout', xhr.responseURL);
<<> 빠른 Fetch에 대해 배우십시오 Fetch API는 XMLHTTPREQUEST의 현대적인 대안입니다. 공통 헤더, 요청 및 응답 인터페이스는 일관성을 제공하는 반면, Promise는 콜백없이 더 쉽게 체인 및 비동기/대기 할 수 있습니다. 위의 XHR 예제는 더 간단한 페치 기반 코드로 변환 될 수 있으며, 이는 반환 된 JSON을 구문 분석 할 수도 있습니다.
// 上传进度 xhr.upload.onprogress = p => { console.log( Math.round((p.loaded / p.total) * 100) + '%') ; };
<🎜 🎜>
Fetch API는 꽤 잘 지원되지만 모든 버전의 Internet Explorer에서는 실패합니다. 2017 년 이전에 Chrome, Firefox 및 Safari 버전을 사용하는 사용자도 문제를 경험할 수 있습니다. 이 사용자는 사용자 기반의 작은 부분 만 구성하거나 주요 고객 일 수 있습니다.
// jQuery Ajax $.ajax('https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c') .done(data => console.log(data)) .fail((xhr, status) => console.log('error:', status));
<<> 쿠키는 기본적으로 포함되지 않습니다
<<> 오류는 거부되지 않습니다 <🎜 🎜>
fetch( 'https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c', { method: 'GET' } ) .then( response => response.json() ) .then( json => console.log(json) ) .catch( error => console.error('error:', error) );
let xhr = new XMLHttpRequest(); xhr.open('GET', 'https://www.php.cn/link/f589a241141007eb225cd68eed7bc06c'); // 请求状态更改事件 xhr.onreadystatechange = function() { // 请求完成? if (xhr.readyState !== 4) return; if (xhr.status === 200) { // 请求成功 - 显示响应 console.log(xhr.responseText); } else { // 请求错误 console.log('HTTP error', xhr.status, xhr.statusText); } }; // 开始请求 xhr.send();
글을 쓰는 시점에서 Fetch는 진행 상황을 지원하지 않습니다. 따라서 파일 업로드 또는 유사한 큰 형태 제출 상태를보고 할 수 없습니다.
Fetch API를 사용한 xmlhttprequest?
응용 프로그램에 진행률 표시 줄을 업로드 해야하는 IE 클라이언트가없는 한. 더 간단한 Ajax 호출의 경우 xmlhttprequest는 더 낮고 복잡하며 함수를 랩핑해야합니다. 불행히도, 시간 초과의 복잡성에 대해 생각하기 시작하고, aborts 호출 및 오류 캡처에 대해서도 Fetch는 함수를 랩핑해야합니다.
xmlhttprequest에 대한 FAQS (FAQS) 및 Fetch Apis
xmlhttprequest와 Fetch API의 주요 차이점은 무엇입니까?
Fetch API가 XMLHTTPREQUEST보다 낫습니까? Fetch API는 종종 약속 사용으로 인해 JavaScript로 HTTP 요청을하는 데 더 나은 선택으로 간주됩니다. 약속은 코드를보다 간결하고 읽기 쉽고 오류 처리가 더 쉬워집니다. Fetch API의 기능은 XMLHTTPrequest보다 강력하고 유연합니다. 그러나 XMLHTTPREQUEST는 여전히 널리 사용되고 지원되며 일부 경우 Fetch API를 지원하지 않는 이전 브라우저를 지원해야 할 때와 같이 더 나은 선택이 될 수 있습니다.
Fetch API가 xmlhttprequest를 대체 할 수 있습니까?예, 페치 API는 http 요청을하는 데 사용되는 javaScript의 XMLHTTPREQUEST를 대체 할 수 있습니다. Fetch API는 새로운 기술이며보다 강력하고 유연한 기능 세트를 보유하고 있습니다. 약속을 사용하여 코드를보다 간결하고 읽기 쉽고 오류 처리가 더 쉬워집니다. 그러나 XMLHTTPREQUEST는 여전히 널리 사용되고 지원되며 일부 경우 Fetch API를 지원하지 않는 이전 브라우저를 지원해야 할 때와 같이 더 나은 선택이 될 수 있습니다.
Fetch API를 사용하는 장점은 무엇입니까?
Fetch API는 XMLHTTPREQUEST에 비해 몇 가지 장점이 있습니다. 약속을 사용하여 코드를보다 간결하고 읽기 쉽고 오류 처리가 더 쉬워집니다. Fetch API에는 요청 및 응답 개체의 일반적인 정의를 포함하여보다 강력하고 유연한 기능 세트도 있습니다. 또한 XMLHTTPREQUEST는 그렇지 않지만 다른 소스에 대한 요청을 할 수 있습니다.
Fetch API 사용의 단점은 무엇입니까?
xmlhttprequest 사용의 단점은 무엇입니까?
xmlhttprequest 및 fetch api를 선택하는 방법은 무엇입니까?
같은 프로젝트에서 XMLHTTPREQUEST와 FCTE API를 모두 사용할 수 있습니까?
예, 같은 프로젝트에서 xmlhttprequest와 fetch apis를 모두 사용할 수 있습니다. 특정 작업에 XMLHTTPREQUEST를 사용하고 특정 요구 사항과 지원 해야하는 브라우저를 기반으로 다른 작업에 대해 API를 가져올 수 있습니다. 그러나 일관성과 유지 보수의 용이성을 위해 이들 중 하나를 고수하는 것이 좋습니다.
JavaScript로 HTTP 요청을하기 위해 대체 XMLHTTPREQUEST 및 FCTE API가 있습니까? 예, XMLHTTPREQUEST 및 JavaScript에서 HTTP 요청을위한 API에 대한 몇 가지 대안이 있습니다. 여기에는 Axios, JQuery 's $ .Ajax 및 SuperAgent와 같은 라이브러리가 포함됩니다. 이 라이브러리는 XMLHTTPrequest 및 Fetch API에 비해 HTTP 요청을하고 추가 기능과 편의성을 제공하기 위해 더 높은 수준의 인터페이스를 제공합니다.위 내용은 xmlhttprequest vs ajax의 Fetch API의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

JavaScript는 이미 최신 브라우저에 내장되어 있기 때문에 설치가 필요하지 않습니다. 시작하려면 텍스트 편집기와 브라우저 만 있으면됩니다. 1) 브라우저 환경에서 태그를 통해 HTML 파일을 포함하여 실행하십시오. 2) Node.js 환경에서 Node.js를 다운로드하고 설치 한 후 명령 줄을 통해 JavaScript 파일을 실행하십시오.
