Ajax-请求参数作为XML发送

本文展示了如何使用XML作为请求体的一部分向服务器发送AJAX请求,包括JSP代码实现、XML创建过程及服务器响应处理。重点在于理解XML与查询串的区别以及如何通过AJAX与服务器交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

可以把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^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值