programing

XMLHttpRequest(Ajax) 오류

mailnote 2023. 3. 22. 21:50
반응형

XMLHttpRequest(Ajax) 오류

사용하고 있다XMLHttpRequestJavaScript에 있습니다.하지만, 그것은 나에게 오류를 주고, 나는 나의 문제가 무엇인지 모른다.
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

반응형