Some print.
Some print.

JQUERY和XML

by 19. on 2008-08-06

JQUERY.AJAX访问XML的问题.

不是直接.ajax访问.XML后缀的文件,而是访问对数据进行简单的封装了的xml字符串(对于一般复杂结构数据的传输,像查询出的记录)~比如我下面这段用dom4j生成的XML字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Response.setContentType("text/html;charset=UTF-8");
 
PrintWriter writer = Response.getWriter();
String PK_ID = Request.getParameter("selectxmmc");
 
Connection connection = null;
PreparedStatement statementQuery = null;
Document doc = DocumentHelper.createDocument();
 
try {
	connection = DatabaseHelper.getConnection(componentManager);
	statementQuery = connection
			.prepareStatement("select * from oa_sdsl_ss_xm where PK_ID = ?");
	statementQuery.setString(1, PK_ID);
	ResultSet rs = statementQuery.executeQuery();
	Element root = doc.addElement("root");
	while (rs.next()) {
		Element xm = root.addElement("xm");
		Element dd = xm.addElement("dd");
		dd.addText(rs.getString("xmdd"));
		Element xmfr = xm.addElement("xmfr");
		xmfr.addText(rs.getString("xmfr"));
		Element jsdw = xm.addElement("jsdw");
		jsdw.addText(rs.getString("jsdw"));
	}
	rs.close();
 
	statementQuery.close();
	statementQuery = null;
	connection.commit();
	connection.close();
	connection = null;
 
	writer.print(doc.asXML());
	writer.close();
 
} catch (Exception ex) {
	ex.printStackTrace();
	writer.print("error");
	writer.close();
} finally {
	if (statementQuery != null) {
		try {
			statementQuery.close();
		} catch (SQLException ex) {
			ex.printStackTrace();
		}
	}
	if (connection != null) {
		try {
			connection.close();
		} catch (SQLException ex) {
			ex.printStackTrace();
		}
	}
}

之后就是想用JQUERY直接解析,返回的类型dataType: “xml”我直接写成xml;却抛出错误,难道设置类型为XML只能访问XML文件?如果访问非XML(比如PHP或JAVA输出的XML字符流)就会有问题?改成dataType : “html”,同样success : function(message),直接alert(message)确是一个XML格式的字符串,然后直接

1
2
3
4
5
jQuery(message).find("xm").each(function(){
var dd = jQuery(this).find('dd').text();
alert (dd);
});
},

解析失败~(jQuery(message).find(“xm”)这句就没有找到”xm”);然后又:

1
2
3
var allNode = message.getElementsByTagName("xm")[0];
var dd = allNode.getElementsByTagName("dd");
alert (dd);

还是不行 – -。最后上网找了找才知道如果返回的是个XML字符流而不是XML文件还是要将其转换为XML对象才可正常解析:

1
2
3
4
5
6
7
8
9
10
11
12
var xmlObject = new ActiveXObject("Msxml.DOMDocument"); 
xmlObject.async = false;   
xmlObject.loadXML(message);
jQuery(xmlObject).find("xm").each(function(){
var dd = jQuery(this).find('dd').text();
var xmfr = jQuery(this).find('xmfr').text();
var jsdw = jQuery(this).find('jsdw').text();
form1.ajaxxmdd.value = dd;
form1.ajaxxmfr.value = xmfr;
form1.ajaxjsdw.value = jsdw;
});
},

解析通过~

{ Tags: , , }

(查看之前文章)    »    |    (查看之后文章)    »    |


这篇文章发布于 2008年08月6日,星期三,6:11 下午,归类于 Diary。 您可以跟踪这篇文章的评论通过 RSS 2.0 feed。 您可以留下评论,或者从您的站点trackback



One Response to “ JQUERY和XML ”

  1. 19. 说: ( Admin commented )

    N长时间后再看这篇文章~
    JQUERY AJAX的时候~如果设置了返回类型:
    dataType :xml~
    输出的时候设置了输出类型
    response.setContentType(“text/xml”);
    可能也不用转换字符流为XML对象~
    没试过~自问自答了~


文章回复(Leave a reply):

注意: 评论者允许直接点击留言人下方的“回复并邮件”按钮将自己回复的评论邮件通知另外评论者。点击“回复”按钮则只回复不发邮件。