Ajax:怎样用dojo.io.bind获取从JSP页面中返回的值

xtykc 08月 27th, 2008

看似一个简单的问题,其实要注意的地方还是满多的,在网上搜了一下,基本没找到什么相关资料,最终经过自己重复探索成功地解决了问题,不妨发出来,除了做笔记之外,或许能被其他人搜到。

要实现的功能:

  • 用JSP从SQL Server 2005数据库某表中取得所有的用户名(用distinct 关键字去重,这个不是本笔记的重点),传回html页面;

JSP代码:

<%

String creators=”";

Statistics st=new Statistics();

creators=st.getCreators();

out.print(creators);//注意这行代码!用out.print()这种方式将值输出到html页面

%>

  • 在html页面中用dojo.io.bind得到JSP页面中输出的值,并将其赋给html页面中的某个元素;

JS代码:

function onLoadPage(){

dojo.io.bind({
url:”../jsp/create_creators.jsp”,
load: function(type, data, evt) {
var creator=data;//creator为接收从JSP页面中传回的值的变量
creators=creator.split(”###”);
var obj=form.creator;

for(i=0;i<creators.length;i++){
obj.options.add(new Option(creators[i]));
}

},
mimetype:”text/plain”
});
}

需要重点注意的主要有两点:

  1. 对creator的定义一定要在dojo.io.bind内部,如果在外部定义的话,引用该变量时会出现‘变量未定义’的错误;
  2. 由于第一点,对html页面中的某个元素赋值的JS语句也必须写在dojo.io.bind内部,因为它们是建立在引用creator变量的基础之上。

PS:用以上的new Option生成的select的值,在JSP里用getParameter取到的字符串后面带有回车符号,可以用trim()方法去掉。