﻿<?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-java随记-随笔分类-Ajax</title><link>http://www.blogjava.net/fool/category/12630.html</link><description>坚持就是胜利!</description><language>zh-cn</language><lastBuildDate>Mon, 11 Sep 2017 21:12:12 GMT</lastBuildDate><pubDate>Mon, 11 Sep 2017 21:12:12 GMT</pubDate><ttl>60</ttl><item><title>js外部调用更新angularjs的ng-repeat视图问题 </title><link>http://www.blogjava.net/fool/archive/2017/09/11/432808.html</link><dc:creator>傻  瓜</dc:creator><author>傻  瓜</author><pubDate>Mon, 11 Sep 2017 13:37:00 GMT</pubDate><guid>http://www.blogjava.net/fool/archive/2017/09/11/432808.html</guid><wfw:comment>http://www.blogjava.net/fool/comments/432808.html</wfw:comment><comments>http://www.blogjava.net/fool/archive/2017/09/11/432808.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fool/comments/commentRss/432808.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fool/services/trackbacks/432808.html</trackback:ping><description><![CDATA[找了个开源基础框架测试一下微信公众号。没想是用jquery做的restful风格的页面。jquery更<br />新table中数据就有些麻烦。所以用angularjs重构一下。<br />页面中angularjs展示数据 &nbsp;<br />&lt;body &nbsp; ng-controller="multi"&gt;&nbsp;<br /><div>&nbsp; &lt;table id="baseTable" class="table table-striped table-bordered table-hover" &gt;</div><div><span style="white-space:pre">					</span>&lt;thead&gt;</div><div><span style="white-space:pre">						</span>&lt;tr&gt;&lt;th style="width:10%" class="center"&gt;标题&lt;/th&gt;</div><div><span style="white-space:pre">						</span>&lt;/tr&gt;</div><div><span style="white-space:pre">					</span>&lt;/thead&gt;</div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;body &nbsp; ng-controller="multi"&gt; &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tbody&gt;<span style="white-space: pre;">	</span>&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;tr ng-repeat="item in defaultData " &gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;td class='center hidden-480'&gt;{{item.title}}&lt;/td&gt;&nbsp; &nbsp;&nbsp;<div><span style="white-space:pre">	</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="white-space:pre">	</span> &nbsp;&lt;/tr&gt;&nbsp;</div><div><span style="white-space:pre">		</span>&nbsp; &lt;/tbody&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/body&gt;<br />&nbsp; &lt;/table&gt;<br />&lt;/body&gt;<br />外部jquery的ajax调用更新数据&nbsp;<br /><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var controllerScope = $('body[ng-controller="multi"]').scope();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; <span style="white-space:pre">	</span> &nbsp; &nbsp; controllerScope.defaultData=results;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; <span style="white-space:pre">	</span> &nbsp; &nbsp; controllerScope.$apply();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; <span style="white-space:pre">	</span>&nbsp;&nbsp;</div><div>注意：外部js不要删除了下面这段代码块。<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr ng-repeat="item in defaultData " &gt;</div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;td class='center hidden-480'&gt;{{item.title}}&lt;/td&gt;&nbsp; &nbsp;&nbsp;<div><span style="white-space: pre;">	</span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="white-space: pre;">	</span>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;</div></div><img src ="http://www.blogjava.net/fool/aggbug/432808.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fool/" target="_blank">傻  瓜</a> 2017-09-11 21:37 <a href="http://www.blogjava.net/fool/archive/2017/09/11/432808.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ext 之EditorGridPanel: 使用dwr完成保存操作</title><link>http://www.blogjava.net/fool/archive/2008/07/09/213494.html</link><dc:creator>傻  瓜</dc:creator><author>傻  瓜</author><pubDate>Wed, 09 Jul 2008 00:54:00 GMT</pubDate><guid>http://www.blogjava.net/fool/archive/2008/07/09/213494.html</guid><wfw:comment>http://www.blogjava.net/fool/comments/213494.html</wfw:comment><comments>http://www.blogjava.net/fool/archive/2008/07/09/213494.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fool/comments/commentRss/213494.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fool/services/trackbacks/213494.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt">这是一个关于dwr和使用ext进行编辑的例子,ext初搞，头大.感觉ext学习起来有些麻烦<br />
<br />
bean类<br />
</span>
<p><span style="font-size: 12pt">package table;<br />
import java.util.Date;</span></p>
<p><span style="font-size: 12pt">public class ExtBean {<br />
&nbsp;private String common;</span></p>
<p><span style="font-size: 12pt">&nbsp;</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; private String light; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;private float price; // automatic date conversions</span></p>
<p><span style="font-size: 12pt">&nbsp;private Date availDate;</span></p>
<p><span style="font-size: 12pt">&nbsp;private boolean indoor;</span></p>
<p><span style="font-size: 12pt">&nbsp;public ExtBean() {<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public ExtBean(String common,&nbsp; String light, float price, Date availDate, boolean indoor) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; this.common = common;</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;this.light = light;<br />
&nbsp;&nbsp;this.price = price;<br />
&nbsp;&nbsp;this.availDate = availDate;<br />
&nbsp;&nbsp;this.indoor = indoor;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public Date getAvailDate() {<br />
&nbsp;&nbsp;return availDate;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public void setAvailDate(Date availDate) {<br />
&nbsp;&nbsp;this.availDate = availDate;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;</span></p>
<p><span style="font-size: 12pt">&nbsp;public String getCommon() {<br />
&nbsp;&nbsp;return common;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public void setCommon(String common) {<br />
&nbsp;&nbsp;this.common = common;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public boolean isIndoor() {<br />
&nbsp;&nbsp;return indoor;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public void setIndoor(boolean indoor) {<br />
&nbsp;&nbsp;this.indoor = indoor;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;</span></p>
<p><span style="font-size: 12pt">&nbsp;public float getPrice() {<br />
&nbsp;&nbsp;return price;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public void setPrice(float price) {<br />
&nbsp;&nbsp;this.price = price;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public String getLight() {<br />
&nbsp;&nbsp;return light;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;public void setLight(String light) {<br />
&nbsp;&nbsp;this.light = light;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">&nbsp;</span></p>
<p><span style="font-size: 12pt">}</span></p>
<br />
<span style="font-size: 12pt">dwr处理类:<br />
</span>
<p><span style="font-size: 12pt">package table;</span></p>
<p><span style="font-size: 12pt">import java.util.ArrayList;<br />
import java.util.Date;<br />
import java.util.Iterator;<br />
import java.util.List;<br />
import org.apache.log4j.Logger;<br />
public class ExtBeanModel {<br />
&nbsp;private static Logger logger = Logger.getLogger(ExtBeanModel.class.getName());<br />
&nbsp;public ExtBeanModel() {<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;// TODO Auto-generated constructor stub<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public String save(List&lt;ExtBean&gt; extBeans) throws Exception{<br />
&nbsp;&nbsp;logger.debug("start");<br />
&nbsp;&nbsp;for(Iterator&lt;ExtBean&gt; it = extBeans.iterator(); it.hasNext();){<br />
&nbsp;&nbsp;&nbsp;ExtBean extBean = it.next();<br />
&nbsp;&nbsp;&nbsp;System.out.println(extBean.getCommon() + "&nbsp; " <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ extBean.getLight()+" "<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ extBean.getAvailDate()+ " " + extBean.getPrice() +&nbsp; " "<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ extBean.isIndoor());<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;return "ok";<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public List&lt;ExtBean&gt; getExtBeans(){<br />
&nbsp;&nbsp;List&lt;ExtBean&gt; extList = new ArrayList&lt;ExtBean&gt;();<br />
&nbsp;&nbsp;ExtBean ext1 = new ExtBean("Erythronium","测试1",9.6F,new Date(),false);<br />
&nbsp;&nbsp;ExtBean ext2 = new ExtBean("Erythronium2","测试2",9.6F,new Date(),true);<br />
&nbsp;&nbsp;extList.add(ext1);<br />
&nbsp;&nbsp;extList.add(ext2);<br />
&nbsp;&nbsp;return extList;<br />
&nbsp;}</span></p>
<p><span style="font-size: 12pt">}<br />
</span></p>
<br />
<br />
<span style="font-size: 12pt">dwr的配置文件dwr.xml<br />
&lt;!DOCTYPE dwr PUBLIC<br />
&nbsp;&nbsp;&nbsp; "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"<br />
&nbsp;&nbsp;&nbsp; "http://www.getahead.ltd.uk/dwr/dwr10.dtd"&gt;<br />
&lt;dwr&gt;<br />
&nbsp;&lt;allow&gt;<br />
&nbsp;&nbsp;&lt;create creator="new" javascript="extModel"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;param name="class" value="table.ExtBeanModel" /&gt;<br />
&nbsp;&nbsp;&lt;/create&gt;<br />
&nbsp;&nbsp;&lt;convert match="table.ExtBean" converter="bean"&gt;&lt;/convert&gt;&nbsp;<br />
&nbsp;&lt;/allow&gt;<br />
&nbsp;&lt;signatures&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.util.List;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import table.ExtBean;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import table.ExtBeanModel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExtBeanModel.save(List&lt;ExtBean&gt;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]]&gt;<br />
&nbsp;&lt;/signatures&gt;&nbsp;&nbsp; <br />
&lt;/dwr&gt;<br />
<br />
jsp页面:<br />
</span>
<p><span style="font-size: 12pt">&lt;%@ page language="java"&nbsp; pageEncoding="utf-8"%&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br />
&lt;title&gt;extDemo&lt;/title&gt;<br />
&lt;link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" /&gt;<br />
&lt;script type="text/javascript" src="ext/adapter/ext/ext-base.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="ext/ext-all.js"&gt;&lt;/script&gt;</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&lt;script type='text/javascript' src='dwr/util.js'&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&lt;script type='text/javascript' src='dwr/engine.js'&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&lt;script type='text/javascript' src='dwr/interface/extModel.js'&gt; &lt;/script&gt;<br />
&nbsp;&nbsp;&lt;script&gt;<br />
&nbsp;&nbsp;//dwr回调方法 保存数据&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;function save(record){<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; var objArray = new Array();<br />
&nbsp;&nbsp;&nbsp; //把ext的Record[]数组转换成 js对象数组<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(ix = 0 ; ix &lt; record.length;ix++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var tmp = record[ix]; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var obj={<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; common:tmp.get('common'),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; light:tmp.get('light'),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; price:tmp.get('price'),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; availDate:tmp.get('availDate'),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inddor:tmp.get('inddor')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objArray[ix]=obj; </span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; extModel.save(objArray,addItemCb); <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; function addItemCb(data)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data != null )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;alert("ok");</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;alert("failure");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;script&gt;<br />
Ext.onReady(function(){<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; Ext.QuickTips.init();</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; function formatDate(value){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value ? value.dateFormat('M d, Y') : '';<br />
&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp; // shorthand alias<br />
&nbsp;&nbsp;&nbsp; var fm = Ext.form;</span></p>
<p><span style="font-size: 12pt">&nbsp;</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; // the column model has information about grid columns<br />
&nbsp;&nbsp;&nbsp; // dataIndex maps the column to the specific data field in<br />
&nbsp;&nbsp;&nbsp; // the data store (created below)</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; var cm = new Ext.grid.ColumnModel([{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:'common',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "名称",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'common',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 100,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.TextField({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allowBlank: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "明亮度",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'light',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 130,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new Ext.form.ComboBox({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typeAhead: true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; triggerAction: 'all',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transform:'light',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lazyRender:true,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listClass: 'x-combo-list-small'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "价格",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'price',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 70,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; align: 'right',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderer: 'usMoney',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.NumberField({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allowBlank: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allowNegative: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxValue: 100000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "使用时间",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'availDate',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 95,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderer: formatDate,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.DateField({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format: 'm/d/y',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minValue: '01/01/06',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disabledDays: [0, 6],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disabledDaysText: 'Plants are not available on the weekends'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; ]);</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; // by default columns are sortable<br />
&nbsp;&nbsp;&nbsp; cm.defaultSortable = true;</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; // this could be inline, but we want to define the Plant record<br />
&nbsp;&nbsp;&nbsp; // type so we can add records dynamically<br />
&nbsp;&nbsp;&nbsp; var extBean = Ext.data.Record.create([<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // the "name" below matches the tag name to read, except "availDate"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // which is mapped to the tag "availability"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'common', type: 'string'},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'light'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'price', type: 'float'},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // automatic date conversions<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'availDate', mapping: 'availability', type: 'date', dateFormat: 'm/d/Y'},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'indoor', type: 'bool'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]);</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; // create the Data Store<br />
&nbsp;&nbsp;&nbsp; var store = new Ext.data.JsonStore({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // load using HTTP<br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; autoLoad:false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fields: ['common', 'light', 'price', 'avaiDate','indoor'],</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sortInfo:{field:'common', direction:'ASC'}<br />
&nbsp;&nbsp;&nbsp; });</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; // create the editor grid<br />
&nbsp;&nbsp;&nbsp; var grid = new Ext.grid.EditorGridPanel({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store: store,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cm: cm,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderTo: 'editor-grid',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:600,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:300,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; autoExpandColumn:'common',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title:'Edit Plants?',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame:true,<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clicksToEdit:1,</span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tbar: [{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '增加',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler : function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var p = new extBean({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; common: 'New Plant 1',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; light: 'Mostly Shade',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; price: 0,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; availDate: (new Date()).clearTime(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; indoor: false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grid.stopEditing();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store.insert(0, p);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grid.startEditing(0, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //保存数据<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '保存',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler : function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取得datasource对象 然后返回修改行的记录对象Record[]数组<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var record = grid.getStore().getModifiedRecords();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // : Ext.data.Record[] </span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; save(record);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; extModel.getExtBeans(extBeanArray);<br />
&nbsp;function extBeanArray(data){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var ix = 0; ix &lt; data.length;ix++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var tmp = data[ix];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var p = new extBean({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; common: tmp.common,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; light: tmp.light,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; price: tmp.price,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; availDate: tmp.availDate,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; indoor: tmp.inddor<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store.insert(ix, p);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; store.load();<br />
});</span></p>
<p><br />
<span style="font-size: 12pt">&lt;/script&gt;</span></p>
<p><br />
<span style="font-size: 12pt">&nbsp;&nbsp;<br />
&lt;select name="light" id="light" style="display: none;"&gt;<br />
&nbsp;&lt;option value="Shade测试"&gt;shade测试&lt;/option&gt;<br />
&nbsp;&lt;option value="Mostly Shady"&gt;Mostly Shady&lt;/option&gt;<br />
&nbsp;&lt;option value="Sun or Shade"&gt;Sun or Shade&lt;/option&gt;<br />
&nbsp;&lt;option value="Mostly Sunny"&gt;Mostly Sunny&lt;/option&gt;<br />
&nbsp;&lt;option value="Sunny"&gt;Sunny&lt;/option&gt;<br />
&lt;/select&gt;<br />
&lt;div id="editor-grid"&gt;&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span> <br />
</p>
<img src ="http://www.blogjava.net/fool/aggbug/213494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fool/" target="_blank">傻  瓜</a> 2008-07-09 08:54 <a href="http://www.blogjava.net/fool/archive/2008/07/09/213494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用jaxp dom 实现 ajax  xml 响应</title><link>http://www.blogjava.net/fool/archive/2006/06/29/55764.html</link><dc:creator>傻  瓜</dc:creator><author>傻  瓜</author><pubDate>Thu, 29 Jun 2006 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/fool/archive/2006/06/29/55764.html</guid><wfw:comment>http://www.blogjava.net/fool/comments/55764.html</wfw:comment><comments>http://www.blogjava.net/fool/archive/2006/06/29/55764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fool/comments/commentRss/55764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fool/services/trackbacks/55764.html</trackback:ping><description><![CDATA[
		<p>在某些情况下用 jaxp dom api 实现ajax xml响应会是一个很好的选择,可以简化程序.需要用到的jar包javax.xml.parsers.*; org.w3c.dom.*;javax.xml.transform.*;javax.xml.transform.stream.*;javax.xml.transform.dom.*;<br />前两个包用来创建xml文档,后面几个用来转换到输出流. 以下简要说明用到的方法.然后贴出一个完整实例.<br />创建新文档             DocumentBuilderFactory factory = DocumentBuilderFactory.<br />                                             newInstance();<br />            DocumentBuilder builder = factory.newDocumentBuilder();<br />            <br />            Document doc = builder.newDocument();<br />创建root元素 或其它元素            Element root = doc.createElement("selects"); <br />创建根元素                doc.appendChild(root);  Element的appendChild()方法用来添加子元素<br />创建文本结点          doc.createTextNode(String textNode)<br />在servlet中 通过以下方法转换到输出流            Transformer t = TransformerFactory.newInstance().newTransformer();            t.transform(new DOMSource(doc),<br />                        new StreamResult(response.getWriter()));<br /><br /><br /><br />web.inf 文件配置一个servlet<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>" version="2.4"&gt;<br />  &lt;display-name&gt;WebModule1&lt;/display-name&gt;<br />  &lt;servlet&gt;<br />    &lt;servlet-name&gt;selectservlet&lt;/servlet-name&gt;<br />    &lt;servlet-class&gt;drownmenu.SelectServlet&lt;/servlet-class&gt;<br />  &lt;/servlet&gt;<br />  &lt;servlet-mapping&gt;<br />    &lt;servlet-name&gt;selectservlet&lt;/servlet-name&gt;<br />    &lt;url-pattern&gt;/selectservlet&lt;/url-pattern&gt;<br />  &lt;/servlet-mapping&gt;<br />&lt;/web-app&gt;<br /><br />jsp页面<br />&lt;%@ page language="java" contentType="text/html; charset=utf-8"%&gt;</p>
		<p>&lt;html&gt;<br />  &lt;head&gt;<br />    &lt;title&gt;Ajax 联动下拉框&lt;/title&gt;<br />    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;<br />    &lt;SCRIPT type="text/javascript"&gt;<br />        var req;<br />        window.onload=function(){<br />        }</p>
		<p>        function Change_Select()<br />        {<br />            var zhi=document.getElementById('state').value;<br />            var url="selectservlet?id="+escape(zhi);<br />            if(window.XMLHttpRequest)<br />            {<br />                req=new XMLHttpRequest();<br />            }else if(window.ActiveXObject)<br />            {<br />                req=new ActiveXObject("Microsoft.XMLHTTP");<br />            }</p>
		<p>            if(req)<br />            {<br />                req.open("GET",url,true);<br />                req.onreadystatechange=callback;<br />                req.send(null);<br />            }<br />        }</p>
		<p>        function callback()<br />        {<br />            if(req.readyState == 4)<br />            {<br />                if(req.status == 200)<br />                {<br />                    parseMessage();<br />                }else{<br />                    alert("Not able to retrieve description"+req.statusText);<br />                }<br />            }<br />        }</p>
		<p>        function parseMessage()<br />        {<br />            var xmlDoc=req.responseXML.documentElement;<br />            var xSel=xmlDoc.getElementsByTagName('select');<br />            var select_root=document.getElementById('city');<br />            select_root.options.length=0;</p>
		<p>            for(var i=0;i&lt;xSel.length;i++)<br />            {<br />                var xValue=xSel[i].childNodes[0].firstChild.nodeValue;<br />                var xText=xSel[i].childNodes[1].firstChild.nodeValue;<br />                var option=new Option(xText,xValue);<br />                try{<br />                    select_root.add(option);<br />                }catch(e){<br />                }<br />            }</p>
		<p>
				<br />        }<br />    &lt;/SCRIPT&gt;<br />  &lt;/head&gt;</p>
		<p>  &lt;body&gt;<br />    &lt;div align="center"&gt;<br />        &lt;form name="form1" method="post" action=""&gt;<br />            &lt;TABLE width="70%" boder="0" cellspacing="0"&gt;<br />                &lt;TR&gt;<br />                    &lt;TD align="center"&gt;Ajax 联动下拉框&lt;/TD&gt;<br />                &lt;/TR&gt;<br />                &lt;TR&gt;<br />                    &lt;TD&gt;请选择省份:<br />                        &lt;SELECT name="state" id="state" onChange="Change_Select()"&gt;<br />                            &lt;OPTION value="0"&gt;未选择&lt;/OPTION&gt;<br />                            &lt;OPTION value="1"&gt;湖南&lt;/OPTION&gt;<br />                            &lt;OPTION value="2"&gt;湖北&lt;/OPTION&gt;</p>
		<p>                        &lt;/SELECT&gt;<br />                        请选择城市:<br />                        &lt;SELECT name="city" id="city"&gt;<br />                            &lt;OPTION value="0"&gt;未选择&lt;/OPTION&gt;<br />                        &lt;/SELECT&gt;<br />                    &lt;/TD&gt;<br />                &lt;/TR&gt;<br />                &lt;TR&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/TR&gt;<br />            &lt;/TABLE&gt;<br />        &lt;/form&gt;<br />    &lt;/div&gt;<br />  &lt;/body&gt;<br />&lt;/html&gt;<br /><br />SelectServlet 类<br />package drownmenu;</p>
		<p>import javax.servlet.*;<br />import javax.servlet.http.*;<br />import java.io.*;<br />import java.util.*;<br />import javax.xml.parsers.*;<br />import org.w3c.dom.*;<br />import javax.xml.transform.*;<br />import javax.xml.transform.stream.*;<br />import javax.xml.transform.dom.*;</p>
		<p>
				<br />public class SelectServlet extends HttpServlet {</p>
		<p>    //Initialize global variables<br />    public void init() throws ServletException {<br />    }</p>
		<p>    //Process the HTTP Get request<br />    public void doGet(HttpServletRequest request, HttpServletResponse response) throws<br />            ServletException, IOException {</p>
		<p>        String targetId = request.getParameter("id").toString();<br />        response.setCharacterEncoding("UTF-8");<br />        response.setContentType("application/xml");<br />        try {<br />            DocumentBuilderFactory factory = DocumentBuilderFactory.<br />                                             newInstance();<br />            DocumentBuilder builder = factory.newDocumentBuilder();<br />            <br />            Document doc = builder.newDocument();<br />          <br />            Element root = doc.createElement("selects");<br />            doc.appendChild(root);</p>
		<p>            /*<br />                        String xml_start="&lt;selects&gt;";<br />                        String xml_end="&lt;/selects&gt;";<br />                        String xml="";*/<br />            if (targetId.equalsIgnoreCase("0")) {</p>
		<p>                makeElement(doc, root, new String[] {"未选择"});<br />                // xml =    "&lt;select&gt;&lt;value&gt;0&lt;/value&gt;&lt;text&gt;Unbounded&lt;/text&gt;&lt;/select&gt;";<br />            }<br />            if (targetId.equalsIgnoreCase("1")) {<br />                makeElement(doc, root, new String[]  {"长沙","岳阳"});</p>
		<p>
				<br />                /* xml =<br />                 "&lt;select&gt;&lt;value&gt;1&lt;/value&gt;&lt;text&gt;Mana Burn&lt;/text&gt;&lt;/select&gt;";<br />                 xml +=<br />                 "&lt;select&gt;&lt;value&gt;2&lt;/value&gt;&lt;text&gt;Death Coil&lt;/text&gt;&lt;/select&gt;";<br />                 xml +=<br />                 "&lt;select&gt;&lt;value&gt;3&lt;/value&gt;&lt;text&gt;Unholy Aura&lt;/text&gt;&lt;/select&gt;";<br />                 xml +=<br />                 "&lt;select&gt;&lt;value&gt;4&lt;/value&gt;&lt;text&gt;Unholy Fire&lt;/text&gt;&lt;/select&gt;";<br />                 */<br />            }<br />            if (targetId.equalsIgnoreCase("2")) {<br />                makeElement(doc, root, new String[] {"武汉","石堰","襄樊","孝感"});<br />                /*<br />                  xml =<br />                 "&lt;select&gt;&lt;value&gt;1&lt;/value&gt;&lt;text&gt;Corprxplode&lt;/text&gt;&lt;/select&gt;";<br />                  xml +=<br />                 "&lt;select&gt;&lt;value&gt;2&lt;/value&gt;&lt;text&gt;Raise Dead&lt;/text&gt;&lt;/select&gt;";<br />                  xml +=<br />                 "&lt;select&gt;&lt;value&gt;3&lt;/value&gt;&lt;text&gt;Brilliance Aura&lt;/text&gt;&lt;/select&gt;";<br />                  xml +=<br />                 "&lt;select&gt;&lt;value&gt;4&lt;/value&gt;&lt;text&gt;Aim Aura&lt;/text&gt;&lt;/select&gt;";<br />                 */<br />            } //else {<br />             <br />                /*<br />                   xml =<br />                 "&lt;select&gt;&lt;value&gt;1&lt;/value&gt;&lt;text&gt;Rain of Chaos&lt;/text&gt;&lt;/select&gt;";<br />                   xml +=<br />                 "&lt;select&gt;&lt;value&gt;2&lt;/value&gt;&lt;text&gt;Finger of Death&lt;/text&gt;&lt;/select&gt;";<br />                 xml += "&lt;select&gt;&lt;value&gt;3&lt;/value&gt;&lt;text&gt;Bash&lt;/text&gt;&lt;/select&gt;";<br />                   xml +=<br />                 "&lt;select&gt;&lt;value&gt;4&lt;/value&gt;&lt;text&gt;Summon Doom&lt;/text&gt;&lt;/select&gt;";<br />                 */<br />         //   }<br />       <br />            Transformer t = TransformerFactory.newInstance().newTransformer();</p>
		<p>            t.transform(new DOMSource(doc),<br />                        new StreamResult(response.getWriter()));</p>
		<p>        } catch (Exception ex) {<br />            throw new ServletException(ex.toString());<br />        }<br />        // String last_xml = xml_start + xml + xml_end;<br />        // response.getWriter().write(last_xml);<br />    }</p>
		<p>    private void makeElement(Document doc, Element root, String[] name) throws<br />            DOMException {<br />        if (name == null) {<br />            return;<br />        }</p>
		<p>        for (int i = 0; i &lt; name.length; i++) {<br />            Element selectElement = doc.createElement("select");</p>
		<p>            root.appendChild(selectElement);</p>
		<p>            Element valueElement = doc.createElement("value");<br />            Element textElement = doc.createElement("text");<br />            int t=i+1;<br />            Text valueText = doc.createTextNode(""+t);            <br />            Text textText = doc.createTextNode(name[i]);<br />            valueElement.appendChild(valueText);<br />            textElement.appendChild(textText);<br />            selectElement.appendChild(valueElement);<br />            selectElement.appendChild(textElement);<br />            </p>
		<p>        }</p>
		<p>    }</p>
		<p>    //Process the HTTP Post request<br />    public void doPost(HttpServletRequest request, HttpServletResponse response) throws<br />            ServletException, IOException {<br />        doGet(request, response);<br />    }</p>
		<p>    //Clean up resources<br />    public void destroy() {<br />    }<br />}<br /><br /><br />欢迎加入QQ群:30406099 </p>
<img src ="http://www.blogjava.net/fool/aggbug/55764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fool/" target="_blank">傻  瓜</a> 2006-06-29 16:06 <a href="http://www.blogjava.net/fool/archive/2006/06/29/55764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>