您的位置:首页 > 其它

Ajax-请求参数作为XML发送

2012-02-01 02:10 344 查看
======================================================

注:本文源代码点此下载

======================================================

可以把xml作为请求体的一部分发送到服器,这与post请求中将查询串作为请求体的一部分进行发送异曲
同工。服务器可以从请求体读到xml,并加以处理。
这个例子展示了对于一个ajax请求如何向服务器发送xml。其中有一个选择框,用户可以选择宠物的
类型。通过这个例子可以了解如何向服务器发送xml。
下面是jsp代码:
select the types of pets in your home:
cats
dogs
fish
birds
hamsters
rabbits
server response:
这个例子与post例子基本上是一样的。区别在于,不是发送由名/值对组成的查询串,而是向服务器
发送xml串。
点击表单上的submit pets(提交宠物)按钮将调用sendpettypes函数。这个函数调用名为createxml的
辅助函数,它根据所选的宠物类型建立xml串。
函数createxml使用document.getelementbyid方法获得select元素引用,然后迭代处理所 有option
子元素,对于选中的每个option元素依据所选宠物类型创建xml标记,并逐个追加到xml中。循环结束时,
要在返回调用函数(sendpettypes)之前向xml串追加结束pets标记。
一旦得到了xml串,sendpettypes函数继续为请求准备xmlhttpobject,然后把xml串指定为send()方法
的参数,从而将xml发送到服务器。
》在createxml方法中,为什么结束标记中斜线前面有一个反斜线?
使用反斜线可以避免把串解析为标记。即使没有反斜线,大多数浏览器也能安全地处理,但是根据严
格的xhtml标准,应该使用反斜线。
根据xmlhttprequest 对象的文档,send()方法可以将串和xml文档对象实例作为参数。那么,这个例
子为什么使用串连接来创建xml,而不是直接创建文档和元素对象呢?遗憾的是,对于从头构建文档的对
象,目前还没有跨浏览器的技术。ie能过activex对象提供这个功能,mozilla浏览器则是通过本地
javascript对象来提供,其它浏览器可能根本不支持,也可能通过其他途径来支持这个功能。
一旦收到xmlhttprequest对象的请求,就会调用这个servlet的dopost方法。dopost方法使用名为
readxmlfromrequestbody的辅助方法从请求体中抽取xml,然后使用jaxp接口将xml串转换为document对象

注意document对象是w3c指定的document接口的一个实例。因此,它与浏览器的document对象有着同
样的方法,如getelementsbytagname.可以使用这个方法来得到文档中所有type元素的列表。对于文档中
的每个type元素,会得以文本值,并逐个追加 到串中。处理完所有的type元素后,响应串写回到浏览器

下面是servlet代码:postingxmlexample.java
public void dopost(httpservletrequest request, httpservletresponse response)
throws servletexception, ioexception {
string xml = readxmlfromrequestbody(request);
document xmldoc = null;
try {
xmldoc =documentbuilderfactory.newinstance().newdocumentbuilder().parse(new bytearrayinputstream(xml.getbytes()));
} catch (exception e) {
system.out.println("parserconfigruationexception:"+e);
}
nodelist selectedpettypes = xmldoc.getelementsbytagname("type");
string type = null;
string responsetext = "selected pets:";
for(int i=0;i关注我收藏该文与我联系



======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: