이번에는 AJAX와 JavaScript 사용에 대한 자세한 설명을 가져왔습니다. AJAX와 JavaScript 사용 시 주의사항은 무엇인가요?
AJAX는 JavaScript 사양이 아니며 친구가 "발명한" 약어인 Asynchronous JavaScript and XML입니다. 이는 JavaScript를 사용하여 비동기 네트워크 요청을 수행한다는 의미입니다.
양식 제출을 주의 깊게 관찰하면 사용자가 "제출" 버튼을 클릭하고 양식 제출이 시작되면 브라우저가 페이지를 새로 고친 다음 새 페이지에서 작업 여부를 알려준다는 것을 알 수 있습니다. 성공했거나 실패했습니다. 안타깝게도 네트워크가 너무 느리거나 다른 이유로 인해 404 페이지가 표시됩니다.
웹이 작동하는 방식은 다음과 같습니다. 하나의 HTTP 요청이 하나의 페이지에 해당합니다.
사용자가 현재 페이지에 머무르면서 동시에 새로운 HTTP 요청을 하게 하려면 JavaScript를 사용하여 데이터를 받은 후 페이지를 업데이트해야 합니다. 사용자는 현재 페이지에 여전히 머물러 있다고 느낄 것입니다. 하지만 데이터는 지속적으로 업데이트될 수 있습니다.
AJAX를 최초로 대규모로 사용한 것은 Gmail이었습니다. Gmail 페이지가 처음 로드된 후 나머지 모든 데이터는 AJAX에 의존하여 업데이트되었습니다.
JavaScript로 완전한 AJAX 코드를 작성하는 것은 복잡하지 않지만 주의해야 합니다. AJAX 요청은 비동기식으로 실행됩니다. 즉, 콜백 함수를 통해 응답을 얻습니다.
최신 브라우저에서 AJAX를 작성하려면 주로 XMLHttpRequestObject:
function success(text) { var textarea = document.getElementById('test-response-text'); textarea.value = text; } function fail(code) { var textarea = document.getElementById('test-response-text'); textarea.value = 'Error code: ' + code; } var request = new XMLHttpRequest(); // 新建XMLHttpRequest对象 request.onreadystatechange = function () { // 状态发生变化时,函数被回调 if (request.readyState === 4) { // 成功完成 // 判断响应结果: if (request.status === 200) { // 成功,通过responseText拿到响应的文本: return success(request.responseText); } else { // 失败,根据响应码判断失败原因: return fail(request.status); } } else { // HTTP请求还在继续... } } // 发送请求: request.open('GET', '/api/categories'); request.send(); alert('请求已发送,请等待响应...');
IE의 하위 버전의 경우 ActiveXObject 개체로 변경해야 합니다.
function success(text) { var textarea = document.getElementById('test-ie-response-text'); textarea.value = text; } function fail(code) { var textarea = document.getElementById('test-ie-response-text'); textarea.value = 'Error code: ' + code; } var request = new ActiveXObject('Microsoft.XMLHTTP'); // 新建Microsoft.XMLHTTP对象 request.onreadystatechange = function () { // 状态发生变化时,函数被回调 if (request.readyState === 4) { // 成功完成 // 判断响应结果: if (request.status === 200) { // 成功,通过responseText拿到响应的文本: return success(request.responseText); } else { // 失败,根据响应码判断失败原因: return fail(request.status); } } else { // HTTP请求还在继续... } } // 发送请求: request.open('GET', '/api/categories'); request.send(); alert('请求已发送,请等待响应...');
표준 쓰기와 IE 쓰기를 혼합하려는 경우 , 다음과 같이 작성할 수 있습니다:
var request; if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else { request = new ActiveXObject('Microsoft.XMLHTTP'); }
window 객체에 XMLHttpRequest 속성이 있는지 감지하여 브라우저가 표준 XMLHttpRequest을 지원하는지 확인합니다. 브라우저가 특정 JavaScript 기능을 지원하는지 여부를 감지하기 위해 브라우저의 navigator.userAgent를 사용하지 마십시오. 첫째, 문자열 자체가 위조될 수 있고, 둘째, JavaScript 기능을 통해 판단하는 것이 매우 복잡하기 때문입니다. IE 버전.
XMLHttpRequest 객체를 생성한 후 먼저 onreadystatechange의 콜백 기능을 설정해야 합니다. 콜백 함수에서는 일반적으로 readyState === 4를 통해 요청이 완료되었는지 여부만 판단하면 됩니다. 완료되면 status === 200을 기준으로 성공적인 응답인지 여부를 판단합니다. .
XMLHttpRequest 객체의 open() 메서드에는 3개의 매개변수가 있습니다. 첫 번째 매개변수는 GET인지 POST인지 지정하고, 두 번째 매개변수는 URL 주소를 지정하며, 세 번째 매개변수는 비동기식을 사용할지 여부를 지정합니다. 기본값은 true이므로 작성할 필요가 없습니다.
참고, 세 번째 매개변수를 false로 지정하지 마세요. 그렇지 않으면 AJAX 요청이 완료될 때까지 브라우저가 응답을 중지합니다. 이 요청에 10초가 걸리면 10초 이내에 브라우저가 "일시 중단" 상태에 있음을 알게 됩니다.
마지막으로 send() 메서드를 호출하여 실제로 요청을 보냅니다. GET 요청에는 매개변수가 필요하지 않으며 POST 요청에는 본문 부분을 문자열 또는 FormData 객체로 전달해야 합니다.
보안 제한
위 내용은 AJAX 및 JavaScript 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!