XMLHttpRequest(Ajax) 오류
사용하고 있다XMLHttpRequest
JavaScript에 있습니다.하지만, 그것은 나에게 오류를 주고, 나는 나의 문제가 무엇인지 모른다.
XML 파일을 해석하여 웹 페이지에 내용을 할당해야 합니다.다음은 제 코드입니다.
<script = "text/javascript">
window.onload = onPageLoad();
var questionNum = 0;
function onPageLoad(questionNum) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","quiz.xml");
try {
xmlhttp.send(null); // Here a xmlhttprequestexception number 101 is thrown
} catch(err) {
document.getElementById("body").innerHTML += "\nXMLHttprequest error: " + err.description; // This prints "XMLHttprequest error: undefined" in the body.
}
xmlDoc = xmlhttp.responseXML;
parser = new DOMParser(); // This code is untested as it does not run this far.
}
</script>
내 XML 파일이 같은 디렉토리 내에 있습니다.
<question>
<query>what is 2+2?</query>
<option>4</option>
<option>5</option>
<option>3</option>
<answer>4</answer>
</question>
참고로 저는 보통 C#이나 Java로 프로그램하고 Google Chrome에서 웹 사이트를 운영하고 있습니다.
그래서 여기에 몇 가지 문제가 있을 수 있습니다.
먼저 사용 방법을 읽어 보겠습니다.비동기 요청을 작성할지 여부를 지정하기 위한 세 번째 선택적 매개 변수가 있으며 기본값은 true입니다.즉, 비동기 요구를 하고 있으며 콜백 함수를 지정한 후send()
MDN의 예를 다음에 나타냅니다.
var oXHR = new XMLHttpRequest();
oXHR.open("GET", "http://www.mozilla.org/", true);
oXHR.onreadystatechange = function (oEvent) {
if (oXHR.readyState === 4) {
if (oXHR.status === 200) {
console.log(oXHR.responseText)
} else {
console.log("Error", oXHR.statusText);
}
}
};
oXHR.send(null);
둘째, 101 오류가 발생하므로 잘못된 URL을 사용할 수 있으므로 요청하려는 URL이 올바른지 확인하십시오.또, 사용의 서버가, 유저에게 서비스를 제공할 수 있는 것을 확인해 주세요.quiz.xml
파일.
디버깅을 하려면 , 문제의 위치를 심플화 또는 좁혀야 합니다.콜백 함수에 대해 걱정할 필요가 없도록 간단한 동기식 요청부터 시작하겠습니다.다음으로 MDN의 동기 요구의 예를 제시하겠습니다.
var request = new XMLHttpRequest();
request.open('GET', 'file:///home/user/file.json', false);
request.send(null);
if (request.status == 0)
console.log(request.responseText);
또한 Javascript로 시작하는 경우 MDN for Javascript API 문서/예제/튜토리얼을 참조할 수 있습니다.
생각할 수 있는 문제가 2개 있습니다.
문제 1
- XMLHTTPRequest 개체가 사용하려는 시점에 데이터 로드를 완료하지 않았습니다.
해결책: "onreadystatechange" - 이벤트에 콜백 함수를 할당하고 해당 함수의 데이터를 처리합니다.
xmlhttp.onreadystatechange = callbackFunctionName;
상태가 DONE(4)에 이르면 응답 내용을 읽을 수 있습니다.
문제 2
- XMLHTTPRequest 개체가 모든 브라우저에 존재하지 않습니다(이 이름).
솔루션:올바른 브라우저(IE의 ActiveXObject)에 대한 올바른 개체를 만들기 위해 try-catch를 사용하거나 jQuery ajax-method와 같은 프레임워크를 사용합니다.
주의: jQuery ajax-method를 사용하는 경우 콜백 함수에 jqXHR.done()을 할당합니다.
다음 행에 문제가 있을 수 있습니다.
window.onload = onPageLoad();
당신이 말하는 괄호를 포함함으로써onload
과 .onPageLoad()
§:
/*Example function*/
function onPageLoad()
{
return "science";
}
/*Set on load*/
window.onload = onPageLoad()
window.onload
콘솔에는 다음과 같이 표시됩니다.
과학
해결책은 브래킷을 제거하는 것입니다.
window.onload = onPageLoad;
해서 럼, 신, 신, 은, 은, 은, 은, so, so 이렇게 쓰고onPageLoad
이치노
을 얻기 는 '응대'가 합니다.readystatechange
의 청취자XMLHttpRequest
" " " " , " " " "
xmlDoc = xmlhttp.responseXML;
parser = new DOMParser(); // This code is untested as it doesn't run this far.
여기에 청취자를 추가합니다.
xmlHttp.onreadystatechange = function() {
if(this.readyState == 4) {
// Do something
}
}
언급URL : https://stackoverflow.com/questions/8866761/xmlhttprequest-ajax-error
'programing' 카테고리의 다른 글
React에서 사용자 세션을 관리하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.22 |
---|---|
Django REST Framework POST 중첩된 개체 (0) | 2023.03.22 |
패키지 내 프록시.json은 가져오기 요청에 영향을 주지 않습니다. (0) | 2023.03.22 |
Word press oop wpdb in class (0) | 2023.03.22 |
워드프레스에서 모든 카테고리를 표시하는 방법 (0) | 2023.03.22 |