programing

이 오류가 계속 발생합니다. XML 구문 분석 오류: 구문 오류이지만 웹 사이트는 여전히 정상적으로 실행됩니다.

minecode 2023. 9. 2. 09:56
반응형

이 오류가 계속 발생합니다. XML 구문 분석 오류: 구문 오류이지만 웹 사이트는 여전히 정상적으로 실행됩니다.

저는 웹사이트를 개발하는 것에 익숙하지 않습니다.web.xml 파일의 서블릿을 매핑해야 한다는 것을 알고 있습니다.web.xml 파일은 다음과 같습니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <display-name>TestApp</display-name>
    <welcome-file-list>
     <welcome-file>index.html</welcome-file>
     <welcome-file>index.htm</welcome-file>
     <welcome-file>index.jsp</welcome-file>
     <welcome-file>default.html</welcome-file>
     <welcome-file>default.htm</welcome-file>
     <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
     <servlet-name>Serve</servlet-name>
     <servlet-class>Serve</servlet-class>
    </servlet>
    <servlet-mapping>
     <servlet-name>Serve</servlet-name>
     <url-pattern>/TestApp</url-pattern>
    </servlet-mapping>
   </web-app>

하지만 jquery $.ajax() 함수를 호출하면 이 오류가 발생합니다.

XML 구문 분석 오류: 구문 오류 위치: http://localhost:8080/TestApp/Serve Line Number 1, 열 1:

AJAX 콜은

    $.ajax({
    url: "Serve",
    type: "POST",
    success: function(out){
        alert(out);
    },
    error: function(){
        alert("No");
    }
});

문제는 서블릿이 여전히 잘 작동한다는 것입니다.경보가 예상대로 작동합니다.브라우저에 오류가 표시되는 이유를 설명해 주시고 해결책을 알려주시기 바랍니다.

중복 질문인 경우 원래 질문에 대한 링크를 제공하십시오.

저는 최근에 같은 문제에 직면했습니다.jQuery는 데이터와 dataType을 올바르게 처리하는 것처럼 보였지만, 대신 Firefox가 구문 오류를 반환했습니다. 이는 코드가 의도한 대로 실행되었지만 콘솔에 오류를 인쇄하는 이유를 설명합니다.

개발자 콘솔을 보면 Firefox가 일반 텍스트 데이터를 다른 형식(XML일 가능성이 있음)으로 해석하고 있음을 알 수 있습니다.Firefox는 데이터를 XML로 구문 분석하는 데 지쳤지만 유효한 XML이 아니기 때문에 "Syntax error"가 콘솔에 인쇄됩니다.

이 문제를 해결하려면 서버를 편집하여 다음 헤더를 반환해야 합니다.

Content-Type: "text/plain"

이 문제는 Firefox에서만 발생한 것으로 보이며 Chrome에서는 이 문제가 발생하지 않았습니다.여기 파이어폭스 버그가 있는데 이 문제를 언급하는 것 같습니다.

원천

적어도 파일 시스템에서 파일을 요청할 때 Firefox 70에서 문제가 여전히 발생합니다.재쿼리가 필요하지 않습니다. 일반적으로 동작을 재현할 수 있습니다.XMLHttpRequest그것을 부르는 것overrideMimeType이전의 방법send해결해줬어요꽤 깨끗한 해결책인 것 같군요.예:

var xhr = new XMLHttpRequest();
xhr.open("GET", window.location, true);
xhr.overrideMimeType("text/html");
xhr.onreadystatechange = function()
{
    if (xhr.readyState == 4) alert(xhr.responseText);
}
xhr.send();

따라서 OP에 구체적으로 답변하기 위해서는 아래의 코드가 오류를 없애야 합니다.

(교체)'application/xml'원하는 MIME 유형으로 변경할 수 있습니다.예를들면,'application/json'이 가장 일반적입니다.)

    $.ajax({
    url: "Serve",
    type: "POST",
    beforeSend: function (xhr) {
       xhr.overrideMimeType('application/xml');  // this line prevents XML parsing error with firefox
    },
    success: function(out){
        alert(out);
    },
    error: function(){
        alert("No");
    }
});

언급URL : https://stackoverflow.com/questions/51000009/i-keep-getting-this-error-xml-parsing-error-syntax-error-but-still-the-website

반응형