xmlhttp的responseXML读xml文件为空,为什么?
时间:2005-12-03
来源:互联网
用xmlhttp的responseText读xml文件有内容,用responseXML就为空
xml文件特简单,
<?xml version="1.0" ?>
<root>
<test>
</test>
</root>
就这样也不行
不知道用responseXML读的xml文件有什么要求。
作者: dreamforever 发布时间: 2005-12-03
如果后台生成时没有指定头部信息, 浏览器会把它当html来看, 会出错. 一般后台必须指定头部(PHP语法):
<?php
header("Content-Type: text/xml; charset=gb2312");
?>
作者: 比尔熊 发布时间: 2005-12-04
读静态xml文件
同样的程序在tomcat下用responseXML.xml可以读出,在weblogic下读的为空
读动态xml文件(jsp生成)
在tomcat和weblogic下都为空。
作者: dreamforever 发布时间: 2005-12-05
原代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> AJAX测试页面</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
html {background-color:#eeeeee}
body {
background-color:#ffffff;
font-family:Tahoma,Arial,Helvetica,sans-serif;
font-size:12px;
margin-left:15%;
margin-right:15%;
border:3px groove #006600;
padding:15px
}
h1 {
text-align:left;
font-size:1.5em;
font-weight:bold
}
</style>
</HEAD>
<!--code by bugx-->
<BODY>
<script type="text/javascript" language="javascript">
var xmlhttp=false;
//创建XMLHTTP对象,读取指定xml文档
function loadXMLDoc (url)
{
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //W3C标准
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //微软标准
} catch (e) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = ResponseContents;
xmlhttp.open('GET', url, true);
xmlhttp.send(null);
}
//监听数据,
function ResponseContents()
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200)
{
clearlist();
buildlist();
}
else{
alert("XML文档错误:\n"+xmlhttp.statusText);
}
}
}
//清除内容
function clearlist() {
var select = document.getElementById("topics");
while (select.length > 0) {
select.remove(0);
}
}
function getElementTextNS(prefix, local, parentElem, index) {
var result = "";
if (prefix ) {
result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
} else {
result = parentElem.getElementsByTagName(local)[index];
}
if (result) {
if (result.childNodes.length > 1) {
return result.childNodes[1].nodeValue;
} else {
return result.firstChild.nodeValue;
}
} else {
return "null";
}
}
//加入列表框
function appendToSelect(select, value, content) {
var opt;
opt = document.createElement("option");
opt.value = value;
opt.appendChild(content);
select.appendChild(opt);
}
//载入列表框
function loadDoc(evt) {
// equalize W3C/IE event models to get event object
evt = (evt) ? evt : ((window.event) ? window.event : null);
if (evt) {
// equalize W3C/IE models to get event target reference
var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if (elem) {
try {
if (elem.selectedIndex > 0) {
loadXMLDoc(elem.options[elem.selectedIndex].value);
}
}
catch(e) {
var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
alert("Unable to get XML data:\n" + msg);
return;
}
}
}
}
//重建内容
function buildlist() {
var select = document.getElementById("topics");
alert(xmlhttp.responseXML.getElementsByTagName("rss").length)
var items = xmlhttp.responseXML.getElementsByTagName("item");
// 取得XML文件节点
// <title> element
for (var i = 0; i < items.length; i++) {
appendToSelect(select, i,
document.createTextNode(getElementTextNS("", "title", items[i], 0)));
}
}
</script>
<h1>Ajax Demo</h1>
<hr />
<form>
<p>类别:<br />
<select onchange="loadDoc(event)">
<option value="">Choose</option>
<option value="http://blog.nowans.com/feed.asp">nblog</option>
</select>
</p>
</form>
<div id="details"><span></span></div>
</BODY>
</HTML>
我把事例程序放在我的网站下,修改调用的动态xml文件为我的文件也不行,
我的动态xml原文件test.jsp如下:
<%@ page contentType="text/xml" language="java" import="java.sql.*"%>
<jsp:useBean id="connect" scope="page" class="test.conn"/>
<?xml version="1.0" encoding="utf-8"?>
<all>
<%
String type=request.getParameter("type");
String sql="select * from softwarecode where type='"+type+"'";
ResultSet rs=connect.executeQuery(sql);
while (rs.next()) {
out.print("<data>");
out.print("<code>");
out.print("<![CDATA["+rs.getString("code")+"]]>");
out.print("</code>");
out.print("<describe>");
out.print("<![CDATA["+rs.getString("describe")+"]]>");
out.print("</describe>");
out.print("</data>");
}
rs.close();
out.print("</all>");
connect.finalize();%>
在ie下test.jsp?type=database显示的结果:
<?xml version="1.0" encoding="utf-8" ?><all><data>
<code>
<![CDATA[SOH0101]]>
</code>
<describe>
<![CDATA[SQL Server]]>
</describe></data></all>
不知道哪有问题?
作者: dreamforever 发布时间: 2005-12-05
作者: 比尔熊 发布时间: 2005-12-05
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> AJAX测试页面</TITLE>
</HEAD>
<BODY>
<script type="text/javascript" language="javascript">
var xmlhttp=false;
//创建XMLHTTP对象,读取指定xml文档
function loadXMLDoc ()
{
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //W3C标准
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //微软标准
} catch (e) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = ResponseContents;
xmlhttp.open('GET','http://localhost/test.jsp', true);
xmlhttp.send(null);
}
//监听数据,
function ResponseContents()
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200)
{
alert(xmlhttp.responseText);
alert(xmlhttp.responseXML.xml);
}
else{
alert("XML文档错误:\n"+xmlhttp.statusText);
}
}
}
</script>
<h1>Ajax Demo</h1>
<hr />
<form>
<p>类别:<br />
<select onchange="loadXMLDoc()">
<option value="">Choose</option>
<option value="test">test</option>
</select>
</p>
</form>
</BODY>
</HTML>
动态jsp
<%@ page contentType="text/xml" language="java" import="java.sql.*"%>
<jsp:useBean id="connect" scope="page" class="test.conn"/>
<?xml version="1.0" encoding="utf-8"?>
<all>
<%
String type=request.getParameter("type");
String sql="select * from softwarecode where type='"+type+"'";
ResultSet rs=connect.executeQuery(sql);
while (rs.next()) {
out.println("<data>");
out.println("<code>");
out.println("<![CDATA["+rs.getString("code")+"]]>");
out.println("</code>");
out.println("<describe>");
out.println("<![CDATA["+rs.getString("describe")+"]]>");
out.println("</describe>");
out.println("</data>");
}
rs.close();
out.println("</all>");
connect.finalize();%>
在ie下test.jsp?type=database显示的结果:
<?xml version="1.0" encoding="utf-8" ?>
<all>
<data>
<code>
<![CDATA[SOH0101]]>
</code>
<describe>
<![CDATA[SQL Server]]>
</describe>
</data>
</all>
就是得不到responseXML的内容,如果我把'http://localhost/test.jsp'改为'http://blog.nowans.com/feed.asp'就完全没问题,所以我觉的是我的jsp的问题,但是这个jsp直接执行显示了xml,没有报错。我已经搞糊涂了
作者: dreamforever 发布时间: 2005-12-06
xmlHttp.open("GET","file.asp?para=xx",true);
后台我用的是ASP生成XML,楼主这问题后来怎么解决的?
作者: chocolate 发布时间: 2006-10-10
作者: chocolate 发布时间: 2006-10-10
一般跟两个东西有关:
1. 输出内容的 编码 2. 输出内容的 格式
asp:
Response.Charset="utf-8"
Response.ContentType="text/xml"
作者: ※潇洒※ 发布时间: 2006-10-11
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //W3C标准
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //微软标准
} catch (e) {
xmlhttp = false;
}
作者: Rimifon 发布时间: 2006-10-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28