java ajax的url_AJAX中从远程URL动态取得xml的方法

AJAX

中从远程

URL

动态取得

xml

的方法

需求:

在JavaScript中动态的从一个URL取得xml文件,然后,动态的更新数据。

问题的难点:

Javascript

不能实现从一个URL读取xml数据。

使用动态的参数的时候,如后使用GET方法,那么,参数有可能太长。

解决的办法:

这个办法使用AJAX可以实现。

因为AJAX可以从URL来动态的读取xml数据。

同时也可以很方便的分析和处理XML数据。

问题的关键点:

AJAX

不能从一个不同Context的服务器上来读入XML,所以要想读取xml数据的话,那就一定要在同一个Context中,如果不在,那么就使用一个Servlet来实现从一个远程的URL上读取数据,然后可以通过调用此Servlet来取得远程的数据。

我的实现:

写一个Servlet来实现从远程url上读取xml数据,这个url参数是用户根据自己的需要传递的。

public void

doGet(HttpServletRequest request, HttpServletResponse response)

throws

ServletException, IOException {

System.out.println("

--------------Get ----------------");

response.setContentType("text/xml");

response.setCharacterEncoding("UTF-8");

//PrintWriter out = response.getWriter();

//doPost(request,response);

String

url = request.getParameter("url");

//out.println(url);

//String

url = "";

System.out.println("url

is :" + url);

//response.setContentType("text/xml");

PrintWriter

out = response.getWriter();

BufferedReader

reader = new BufferedReader(new InputStreamReader(new URL(url).openStream()));

StringBuffer

xmlData = new StringBuffer();

String

tmp = "";

while((tmp

= reader.readLine())!=null){

log.info(tmp);

out.print(tmp);

//System.out.println("

tmp :" + tmp);

xmlData.append(tmp);

}

try {

out.println(XMLUtil.format(xmlData.toString()));

} catch

(DocumentException e) {

//

TODO Auto-generated catch block

e.printStackTrace();

}

reader.close();

}

在AJAX来调用servlet取得此数据

<

script

type

=

"text/javascript"

>

var

xmlHttp=

new

ActiveXObject(

"Msxml2.XMLHTTP"

);

//alert(xmlHttp);

这个

url

是你的

servlet

uri,

只能是在同一个

context

内的,否则不能调用。所以,如果需要跨服务器的话,或者需要跨

context

的话,就需要使用在本

context

上使用一个

servlet

做跳转。

var

sevUrl =

"../servlet/PullXmlData?url="

;

下面的那个

url

参数其实是我们的远程的

xml

的数据的

url,

因为在参数里面有等号,所以在调用之前就要通过一个处理和转换,这一步也是必须的。

var

url = sevUrl + encodeURIComponent(

"http://192.168.1.50:8080/remoteServer /XmlInvoke?aaa=aaa&bbb=bbb

"

);

alert(

"url :"

+ url);

xmlHttp.open(

"post"

, url ,

false

);

xmlHttp.onreadystatechange=

function

()

{

if

(xmlHttp.readyState==4)

{

alert(xmlHttp.responseText);

document.write(xmlHttp.responseText);

}

}

xmlHttp.send();

script

>

我也刚接触

Ajax,

所以也只能想到这个解决方案,如果大家有好的解决办法,还请多多指教。

|----------------------------------------------------------------------------------------|

版权声明  版权所有 @zhyiwww

引用请注明来源 http://www.blogjava.net/zhyiwww

|----------------------------------------------------------------------------------------|

posted on 2007-05-14 16:28 zhyiwww 阅读(3131) 评论(3)  编辑  收藏 所属分类: javascript

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值