Js Debug:
Loading...

Category Archives: Single post.  | - 查看最近留言- |   | - 详细分类查看TAGS - |   | - 打开LRC-19LINE - |

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;
});
},

解析通过~

Posted 06 八月 2008 19. § Diary ± Tags: + +   ¢ Trackback
(查看之前文章)    » WordPress.Flash.Tags    |   (查看之后文章)    » WordPress装B评论插件    |


文章回复(Leave a reply):