응답 XML은 항상 null입니다.
파이어폭스 3.6.10을 사용하고 있으며, 디버깅을 위해 파이어버그를 사용하고 있습니다.
제 코드는 다음과 같습니다.
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url,false);
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.send(null);
alert(xmlhttp.responseXML);
응답 XML은 항상 null이며, 다른 도메인의 여러 URL에서 시도했습니다.저도 비동기식으로 시도해봤는데, 결과는 같습니다.응답 텍스트는 항상 올바르게 반환되며 문제가 없습니다.
내 목표는 responseXML.documentElement를 얻는 것입니다.
도와주셔서 고마워요.
EDIT-------------------------
이 Javascript 코드는 Greasemonkey 사용자 스크립트에서 실행되었으며, 요청한 URL과 동일한 출처를 확인했습니다.또한 Firebug 콘솔에서 실행을 시도하여 오리진 정책을 다시 확인했습니다.둘 다 동일한 오류입니다.
자바스크립트를 싫어해야 합니다.
한 교차 에도, 이미언급교문외에도제도인메차,responseXML
XML이 필요할 것입니다.Content-Type
서버에서 보낸 응답 헤더에 있습니다.이러한 요구 사항 중 하나가 일반 웹 사이트에서 충족될 가능성은 매우 낮습니다.
후자의 경우 다음을 사용할 수 있습니다.
xmlhttp.overrideMimeType('application/xml');
이 유효하지에는 "XML" "XML" "XML" "XML" "XML" "XML" "XML"만 표시됩니다.null
.
제 기억이 맞다면, 이것은 파이어폭스와 관련된 알려진 문제입니다(저는 이전에도 같은 문제가 있었습니다).
해결 방법은 응답 텍스트를 XML 문서로 다시 구문 분석한 다음 이를 사용하는 것입니다.
이와 같은 것:
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlhttp.responseText, "application/xml");
저는 당신이 같은 원산지 정책을 위반하고 있다고 확신합니다.
XHR의 경우 프로토콜, 도메인, 포트 등이 동일해야 합니다.따라서 localhost:8080/app에서 앱을 실행하는 경우 www.cnn.com 에 Ajax할 수 없습니다.
브라우저마다 다르게 처리합니다. FF가 당신이 설명한 대로 하는 것을 보았습니다. 요청이 정상적으로 반환되는 것처럼 보이지만 데이터가 없습니다.
▁the다합니의 값을 .url
바로 브라우저에 있습니다.오류 정보를 얻을 수 있습니다.
구문 분석 오류가 표시되면 인코딩이 잘못되어 XML에 잘못된 특수 문자가 있을 수 있습니다.
이를 방지하려면 모든 체인이 올바르게 인코딩되었는지 확인해야 합니다.
정적 XML 파일인 경우 저장할 때 편집기 인코딩을 올바르게 설정해야 합니다.(거의) 모두를 수행하는 인코딩은 UTF-8이며, 일반적으로 편집기 설정 또는 저장 대화 상자에서 선택할 수 있는 속성입니다.
동적으로 생성되는 경우.데이터, 페이지 및 서버 응답도 올바르게 인코딩되어야 합니다. "XML"로 은 "XML"로 시작합니다.<?xml version="1.0" encoding="UTF-8"?>
매우 기본적이고 정적인 XML을 사용하여 먼저 시도할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?><root>hi</root>
그런 다음 단계를 하나씩 추가하여 부서지지 않고 여러분의 것처럼 만드십시오.
몇 시간 동안 이것을 가지고 놀다가 마침내 나를 엉망으로 만든 바보 같은 작은 실수를 알아냈어요.
만약 당신이 나와 같다면, 당신은 당신의 자바스크립트 코드를 외부 ".js" 파일에 보관하는 것을 좋아합니다.
따라서 xmlhttp.open("GET", "yourxmlfile.xml", false)을 사용하면 코드가 외부 JavaScript 파일에 있더라도 항상 HTML 문서에 대한 XML 파일을 검색합니다.
responseText가 null을 반환하면 지정한 경로 위치에서 로컬 파일을 찾을 수 없습니다.또한 비동기를 true로 설정하면 파일이 생성되고 응답 텍스트가 빈 XML 문서의 내용을 전달합니다.
예:
xmlDoc = xmlhttp.response텍스트; //문자열 데이터 유형
or
xmlDoc = xmlhttp.responseXML; //XML 데이터 유형
- folder1 = folder2, index.dll.
- folder2 = index.js, yourxmlfile.xml.
- HTML = "yourxmlfile.xml"이 아닌 "folder2/yourxmlfile.xml"에서 XML로의 경로입니다.
그리고 XML 문서를 열고 요청을 보내기 전에 "text/xml"로 구문 분석해야 합니다.
예:
- xhttp.OverrideMimeType('text/xml');
- Chrome: xmlDoc =(새 DOMParser()).parseFromString(xmlDoc,text/xml");
나에게 그것은 간단한 문제였습니다.xml/php 파일에 구문 오류가 있습니다.제가 브라우저에서 파일을 보았을 때 브라우저는 어떠한 오류도 감지하지 못했습니다.
XML 문서 내의 요소가 제대로 닫혀 있는지 확인합니다!
잘못된 형식의 XML로 인해 이 문제가 발생합니다.예를 들어, 나는 속성을 가지고 있었습니다.renderer
(="something"
이 됩니다.DOMParser
은 불는리고라라고 .XMLHTTPRequest
목이 메도록이런 이유로load
되지 않습니다. XML은 포함되지 않습니다.
저도 같은 문제가 있었습니다.
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url,false);
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.responseType = "document";
xmlhttp.send(null);
alert(xmlhttp.responseXML);
이 문제를 해결하려면 코드에 responseType "document" 행을 추가합니다.열린 메서드와 전송 메서드 사이를 이동합니다.
참조: (USAGE 참조) https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/HTML_in_XMLHttpRequest
올바른 xml 예제를 찾는 데 어려움을 겪었습니다.null을 .는 는저.<root>
요소가 누락되었습니다.
<root>
<info><p>Array
(
)
</p>
</info>
<itemData>{"id":"40","client_id":"1","nameUnique":"Lore ipsum","description":null,"userComment":null,"last_modified":"2018-12-15 02:48:57"} </itemData>
</root>
언급URL : https://stackoverflow.com/questions/3781387/responsexml-always-null
'programing' 카테고리의 다른 글
두 인수를 사용하는 크기 (0) | 2023.08.05 |
---|---|
Ubuntu Server의 Apache 2.4.6: 서버 구성(PHP FPM)에 의해 클라이언트가 거부됨 [PHP 파일 로드 중] (0) | 2023.08.05 |
메이븐 의존성의 순서가 왜 중요합니까? (0) | 2023.07.31 |
IDLE 대화형 셸에서 파이썬 스크립트를 실행하는 방법은 무엇입니까? (0) | 2023.07.31 |
@Inspectable with enum? (0) | 2023.07.31 |