Jquery 操作xml 文档的方法
需求: 页面上有两个下拉框,显示游戏大区 和游戏服务器,当游戏大区改变时,游戏服务器也跟着改变
界面部分html代码
<tr class="tkSigUser">
<th>游戏大区:</th>
<td>
<asp:DropDownList ID="gamezonedll" runat="server"></asp:DropDownList>
</td>
<td></td>
</tr>
<tr class="tkSigUser">
<th>服务器名:</th>
<td>
<select id="serverddl" name="serverdll"></select>
<input type="hidden" name="serverName" />
</td>
<td></td>
</tr>
xml文档内容

在ready部分 页面初始化时根据大区ID加载服务器信息 ,当大区变更时change事件,服务器信息变化。
var xmDoc;//用于装载请求到的xml文档
使用ajax 异步请求xml文档并处理
$(document).ready(function () {
$.ajax({
url: "../js/xinhejiguang.xml",
dataType: 'xml',
type: 'get',
error: function () {
alert("加载区服信息失败");
},
success: function (xml) {
xmlDoc = xml; //将xml保存起来,可以在其他地方接着使用,不用再次请求
var gamezoneid = $("#<%=gamezonedll.ClientID %> option:selected").val();
findServer(gamezoneid);
}
});
$("#<%=gamezonedll.ClientID %>").change(function () {
var id = $("#<%=gamezonedll.ClientID %> option:selected").val();
$("#serverddl").empty();
findServer(id);
});
});
//根据大区ID,查找服务器信息并添加到 服务器节点
function findServer(zoneid) {
var gameServerList = $(xmlDoc).find("game[id='10123']").find("gameZone[id='"+zoneid+"']").find("gameServer");
gameServerList.each(function (index, content) {
var serverid = $(content).attr("id");
var servername = $(content).attr("name");
$("#serverddl").append("<option value='" + serverid + "'>" + servername + "</option>");
}); }
程序采用的是web form ,.net 2.0平台。所以使用了服务器端控件。开始的设想是 大区 、服务器都使用web服务器控件,在page_Load 方法中初始化加载区服信息,
用jquery 异步改变服务器的值,但是在提交时出现 回发或回调参数无效 的错误,
网上查找基本回答都是一样的 http://hi.baidu.com/chy_daima/item/733e963fd63dccb8134b148c
但是这些方法都不好用,简单方法 禁用 EnableEventValidation="false" ,会导致在behindcode 中获取不到你修改的控件的值,只是获取原来的值。
开始用js取新的服务器信息是用下边的方法:
webform 在前台js中调用后台代码的方法:
首先在Page_Load 中 写上
Ajax.Utility.RegisterTypeForAjax(typeof(xinhejiguang));
xinhejiguang 是后台的类名
然后再后台写方法
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)]
public string GetGameServer(string zoneId)
{
XmlDocument jiguang = new XmlDocument();
string filepath = AppDomain.CurrentDomain.BaseDirectory + "zc\\js\\xinhejiguang.xml";
jiguang.Load(filepath); XmlNode zonenode = jiguang.SelectSingleNode("/company/gameList/game[@name='极光世界']/gameZoneList/gameZone[@id=" + zoneId + "]");
XmlNodeList serverlist = zonenode.SelectNodes("gameServerList/gameServer");
StringBuilder buider = new StringBuilder(); foreach (XmlNode server in serverlist)
{
string serverid = server.Attributes["id"].Value;
string servername = server.Attributes["name"].Value;
buider.AppendFormat("{0}:{1}|", serverid, servername);
} buider.Remove(buider.Length - , );
return buider.ToString();
}
那么 在前台 js 就可以通过
var id = 11159;
var result = xinhejiguang.GetGameServer(id).value;
来调用后台程序,得到服务器信息。然后再进行split 分割,加载。
这个方法对于用js调用服务器端的方法很好用。
Jquery 操作xml 文档的方法的更多相关文章
- 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
原文:操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP) 不管是用 PHP 还是 C#, 在操作 XML 的时候我们除了一个节点一个节点去取值之外, 还有一个非常方便的表达式, 就是 ...
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- 操作xml文档的常用方式
1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...
- 四种生成和解析XML文档的方法详解
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- jquery-7 jquery中的文档处理方法有哪些(方法的参数表示功能增强)
jquery-7 jquery中的文档处理方法有哪些(方法的参数表示功能增强) 一.总结 一句话总结:多看参考文档,多看主干目录.一般的功能分两个方法来实现,一个对应标签,一个对应标签和事情,比如克隆 ...
- C#XmlHelper帮助类操作Xml文档的通用方法汇总
前言 该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法(主要包括Xml序列化和反序列化,Xml文件读取,Xml文档节点内 ...
- XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。
XML DOM DOM 把 XML 文档视为一种树结构.通过这个 DOM 树,可以访问所有的元素.可以修改它们的内容(文本以及属性),而且可以创建新的元素.元素,以及它们的文本和属性,均被视为节点. ...
- 用ORM的思想操作XML文档,一个对象就搞定不要太简单。滚蛋吧!XmlDocument、XmlNode、Xml***……
大家有没有这样的感受,一涉及XML文档操作就得百度一遍.是不是非!常!烦!.各种类型,各种方法,更别提为了找到一个节点多费劲.本来想写个XML操作的工具方法,写了两行一想既然XML文档是有规律的,如果 ...
- C#操作XML文档---基础
增查改删代码如下 public void CreateXML() { XmlDocument xml = new XmlDocument(); xml.AppendChild(xml.CreateXm ...
随机推荐
- 实用程序Commer的开发——U盘内容可选同步至FTP服务器
需求分析:需要在软件运行后将插入的U盘里面的文件Copy至本机上,然后可选的上传一部分至FTP服务器上. 系统设计:基于MFC的基本对话框程序:主要模块有检测U盘插入并复制文件以及上传到网络.通过对U ...
- Educational Codeforces Round 5 A
Problem A:http://codeforces.com/contest/616/problem/A A. Comparing Two Long Integers 果然还是我太天真了(长整数比较 ...
- itext 落雨 out of membery Memory Optimization
Memory Optimization If a document deals with a lot of data or large elements, such as images, it is ...
- CSRF注入式攻击防御讲解
0x01 什么是CSRF攻击 CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/PO ...
- sql批量删除wordpress所有日志修订revision
wordpress日志修订是所有速度慢的罪恶之源,每次在后台发布或修改文章的时候,数据库都会产生一个revision版本的记录,几百篇日志会有几千条日志修订的记录,如果更多文章的话,那一个网页打开可能 ...
- eclipse查看jar包中class的中文注释乱码问题的解决
1,问题来源是在eclipse中直接查看springside的class(由eclipse自动反编译)里面注释的乱码问题: Preferences-General-Workspace-Text fil ...
- linux grep和正则表达式
虽然正则表达式经常都在用,但是很少能够静下心来仔细的总结一下.最近看了一个台湾人的网站叫做鸟哥Linux私房菜,关于正则表达式的描述挺详细的.在此,我进行一下总结,如果想仔细的学习正则表达式,请访问鸟 ...
- Oracle导入(imp )与导出(exp )
导出exp username/password@orcl file=db.dmp 导入imp username/password@orcl file=h:\db.dmp full=y 备注:在导入之 ...
- HDU1548——A strange lift(最短路径:dijkstra算法)
A strange lift DescriptionThere is a strange lift.The lift can stop can at every floor as you want, ...
- 工具----IcoFX
IcoFX IcoFX 是一款免费的图标编辑工具,让您轻松创建 Windows XP 和 Windows Vista 图标. 在编辑区您可以轻松的预览.保存.更改您的图标.您可以将您喜欢的图像转换为图 ...