﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-zhyiwww-随笔分类-&lt;b&gt;AJAX&lt;/b&gt;</title><link>http://www.blogjava.net/zhyiwww/category/31911.html</link><description>用平实的笔触，记录曾经在编程路上的点点滴滴………</description><language>zh-cn</language><lastBuildDate>Sat, 27 Sep 2008 08:35:33 GMT</lastBuildDate><pubDate>Sat, 27 Sep 2008 08:35:33 GMT</pubDate><ttl>60</ttl><item><title>DWR中使用回调函数的传值问题</title><link>http://www.blogjava.net/zhyiwww/archive/2008/09/26/231268.html</link><dc:creator>zhyiwww</dc:creator><author>zhyiwww</author><pubDate>Fri, 26 Sep 2008 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/zhyiwww/archive/2008/09/26/231268.html</guid><wfw:comment>http://www.blogjava.net/zhyiwww/comments/231268.html</wfw:comment><comments>http://www.blogjava.net/zhyiwww/archive/2008/09/26/231268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhyiwww/comments/commentRss/231268.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhyiwww/services/trackbacks/231268.html</trackback:ping><description><![CDATA[
		<p>在使用DWR的时候，解决值得传递问题，可以通过回调函输实现对客户端的javascript的函数的调用。<br />同时可以通过DWR实现了通过javascript对java的调用。所以DWR解决了在Java和javascript之间的互相调用问题。<br /><br />但是在实际的调用过程中，有些问题还是需要解决的，如：<br /><br />如何在回调中传递串对象？<br />如何回调中传递Java对象？<br /><br />如果，能实现传递串对象，其实，已经可以实现了在javascript和java之间的数据传递，也可以通过在java上组合成json串返回，就可以实现，和对象的轻松转换。<br /><br />如果能实现传递对象，那不就省去了很多的问题，但是，这个问题，我也没有搞定。<br />不过象下面的例子，已经可以实现返回一个new Date()的Object对象了。不过，我看了一下，应该返回的是一个Date的串对象。<br /><br />如下代码，是在Dwr中的调用<br />javascript：<br />   ChatManager.regist(username,{<br />     callback:function(obj){<br />     alert("call back");<br />     alert("obj : " + obj);<br />     <br />     var map = getMap("theMap");<br />     alert(map.x);<br />        <br />   }});</p>
		<p>JAVA:</p>
		<p>   public Object regist(String username,HttpServletRequest request){<br />     <br />     System.out.println("regist user "+ username);<br />     <br />     updateUsersList(username,true,request);<br />     <br />     <br />     return new User("aaa","dsfdssdfdsf");<br />   <br />   }</p>
		<p>只有在此 regist方法有返回值得情况下，回调函数才能取到传入的值。<br />传递的如果是串类的对象，没有问题，如果我传递的是一个对象，就不能取到。<br />如<br />   <br />   public Object regist(String username,HttpServletRequest request){<br />     <br />     System.out.println("regist user "+ username);<br />     <br />     updateUsersList(username,true,request);<br />     <br />     <br />     return new A("myname");<br />   <br />   }<br />   注意：A是一个inner class,是在ChatManager里面定义的内部类。<br />   class A{<br />     private String uname;<br />     <br />     public A(String uname){<br />        this.uname = uname;<br />     }<br />     <br />     public String getUname(){<br />        return this.uname;<br />     }<br />   };<br />这种情况下，回调函输取得的就是null.</p>
		<p>   <br /></p>
<img src ="http://www.blogjava.net/zhyiwww/aggbug/231268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhyiwww/" target="_blank">zhyiwww</a> 2008-09-26 11:55 <a href="http://www.blogjava.net/zhyiwww/archive/2008/09/26/231268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在IE浏览器下用javascript解析XML的三种方法</title><link>http://www.blogjava.net/zhyiwww/archive/2008/06/02/205378.html</link><dc:creator>zhyiwww</dc:creator><author>zhyiwww</author><pubDate>Mon, 02 Jun 2008 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/zhyiwww/archive/2008/06/02/205378.html</guid><wfw:comment>http://www.blogjava.net/zhyiwww/comments/205378.html</wfw:comment><comments>http://www.blogjava.net/zhyiwww/archive/2008/06/02/205378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhyiwww/comments/commentRss/205378.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhyiwww/services/trackbacks/205378.html</trackback:ping><description><![CDATA[我自己在学习的过程中才知道，在用javascript实现对xml的解析的时候，在不同的浏览器下面，有不同的方法。下面是在IE下面的解析方法，我说的三种，仅仅是我对于其做的一总结，希望能对正在学习ajax的您有所帮助。<br /><br />从服务器取得的XML结果：<br />  &lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br /> &lt;citys&gt;<br /> &lt;city&gt;shanghai&lt;/city&gt;<br /> &lt;city&gt;tianjin&lt;/city&gt;<br /> &lt;city&gt;chengdu&lt;/city&gt;<br /> &lt;city&gt;chongqing&lt;/city&gt;<br /> &lt;city&gt;hainan&lt;/city&gt;<br />&lt;/citys&gt;<br /><br />解析方法（一）<br />        var doc = response.responseXML;<br />        //alert(doc);<br />   <br />        var root = doc.documentElement;<br />        alert(root.text);<br />        <br />        var cities = root.childNodes;<br />        alert(cities.length);<br />        <br />        for(var i=0;i&lt;cities.length;i++){<br />          var city = cities[i];<br />          alert(city.text);<br />        }<br /><br />解析方法（二）：<br />        var cities = doc.selectNodes("/citys/city");<br />        alert(cities.length);<br />        <br />        for(var i=0;i&lt;cities.length;i++){<br />          var city = cities[i];<br />          alert(city.text);<br />        }<br />        <br />解析方法（三）：<br /><br />  var doc = response.responseXML;<br />        var cs = doc.getElementsByTagName("city");      <br />        alert(cs.length);<br />        <br />        for(var i=0;i&lt;cs.length;i++){<br />          vara = cs[i];<br />          //alert(a);<br />          //alert(a.nodeName);<br />          //alert(a.nodeValue);<br />          var b = a.childNodes;<br />          //alert(b);<br />          var c=b[0];<br />          alert(c.nodeValue);<br />        }<br /><br />只有第三种方法，可以在IE和Firefox下面通用。<br />如果有不妥之处，请路过的您多多指教。<br /><br /><a href="/Files/zhyiwww/AjaxDemo.rar">本例子源码下载</a><br /><br /><br /><br /><img src ="http://www.blogjava.net/zhyiwww/aggbug/205378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhyiwww/" target="_blank">zhyiwww</a> 2008-06-02 17:49 <a href="http://www.blogjava.net/zhyiwww/archive/2008/06/02/205378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在firefox浏览器下用javascript解析XML</title><link>http://www.blogjava.net/zhyiwww/archive/2008/06/02/205376.html</link><dc:creator>zhyiwww</dc:creator><author>zhyiwww</author><pubDate>Mon, 02 Jun 2008 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/zhyiwww/archive/2008/06/02/205376.html</guid><wfw:comment>http://www.blogjava.net/zhyiwww/comments/205376.html</wfw:comment><comments>http://www.blogjava.net/zhyiwww/archive/2008/06/02/205376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhyiwww/comments/commentRss/205376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhyiwww/services/trackbacks/205376.html</trackback:ping><description><![CDATA[刚接触ajax不久，想通过ajax实现从服务器上动态取得xml数据，然后，在客户端动态更新并显示。<br />但是，再firefox中，在取得xmlDom后，用在IE下面解析的办法（网上有很多的资料，也可以我的总结），怎么也不能取得标签文本的值。<br /><br />经过多次实践，才发现了下面的方法是可以实现的。原来很简单（见笑了…………）<br /><br />服务器返回XML结果如下：<br />  &lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br />- &lt;citys&gt;<br /> &lt;city&gt;shanghai&lt;/city&gt;<br /> &lt;city&gt;tianjin&lt;/city&gt;<br /> &lt;city&gt;chengdu&lt;/city&gt;<br /> &lt;city&gt;chongqing&lt;/city&gt;<br /> &lt;city&gt;hainan&lt;/city&gt;<br />  &lt;/citys&gt;<br /><br />==========================================================================<br />解析如下：<br /><br />// 取得的是xmlDom对象<br />var doc = response.responseXML;<br />         // 根据标签来取得List对象<br />        var cs = doc.getElementsByTagName("city");      <br />        alert(cs.length);<br />        <br />        for(var i=0;i&lt;cs.length;i++){<br />          var a = cs[i];<br />          //alert(a);<br />          //alert(a.nodeName);<br />          //alert(a.nodeValue);<br />          var b = a.childNodes;<br />          <font color="#0000ff"><b>(我的疑问：为什么需要取得b，cs[i]不就是一个city的对象了，为什么还需要取得数组，然后再取其元素,疑惑中)</b></font><br />          //alert(b);<br />          var c=b[0];<br />          alert(c.nodeValue);<br />        }<br /><br />cs取得的结果应该是：<br /> &lt;city&gt;shanghai&lt;/city&gt;<br /> &lt;city&gt;tianjin&lt;/city&gt;<br /> &lt;city&gt;chengdu&lt;/city&gt;<br /> &lt;city&gt;chongqing&lt;/city&gt;<br /> &lt;city&gt;hainan&lt;/city&gt;<br />city Element对象的一个集合。<br />所以，对于a来说，那么就应该是<br /> &lt;city&gt;shanghai&lt;/city&gt;<br />每一个city Element元素的对象了，但是，错了。此处得到的是一个<br />Element标签元素的一个数组。<br />也就是说<font color="#ff1493"><b>用childNodes方法取得的对象永远是数组对象</b></font>。那么，你想遍历其中元素的话，就需要用c对象来取。<br /><br /><a href="/Files/zhyiwww/AjaxDemo.rar">本例子源代码下载</a><br /><br /><img src ="http://www.blogjava.net/zhyiwww/aggbug/205376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhyiwww/" target="_blank">zhyiwww</a> 2008-06-02 17:40 <a href="http://www.blogjava.net/zhyiwww/archive/2008/06/02/205376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>