我在做一个东西时。要把通过jsp访问数据库的结果传递给JavaScript的数组。究竟该怎么做呢,望各位帮帮我。我是这样做的,不知道是哪个错了哦?帮我看看,一定重谢!
<SCRIPT language=JavaScript>
var bannerAD=new Array();
var bannerADlink=new Array();
var bannerADtitle=new Array();
<%
List v7=(List)session.getAttribute(Constants.TPXW1_LIST_KEY);
Tpxw tpxw=null;
int j=0;
if(v7!=null){
for(int i=0;i<v7.size();i++){
tpxw=(Tpxw)v7.get(i);
%>
bannerADlink[<%=j%>]=<%=tpxw.getId()%>;bannerAD[<%=j%>]=<%=tpxw.getImage()%>;bannerADtitle[<%=j%>]=<%=tpxw.getTitle()%>;<% j++;
}
}%>
</SCRIPT>
<SCRIPT language=JavaScript>
var bannerAD=new Array();
var bannerADlink=new Array();
var bannerADtitle=new Array();
<%
List v7=(List)session.getAttribute(Constants.TPXW1_LIST_KEY);
Tpxw tpxw=null;
int j=0;
if(v7!=null){
for(int i=0;i<v7.size();i++){
tpxw=(Tpxw)v7.get(i);
%>
bannerADlink[<%=j%>]=<%=tpxw.getId()%>;bannerAD[<%=j%>]=<%=tpxw.getImage()%>;bannerADtitle[<%=j%>]=<%=tpxw.getTitle()%>;<% j++;
}
}%>
</SCRIPT>
脚本:
<script>function goBOM(pid,quant,pro_id,mycode,obj) { document.all.bomframe.src="../XXX.do?my_pid="+pid+"&myquant="+quant+"&opt=bigentree&pro_id="+pro_id+"&mycode="+mycode;
}</script>
你看看运行后的页面的源代码,如果JS代码有问题页面是会报错的。
你根据错误找到源代码的地方,看看是不是生成的代码不符合JAVASCRIPT的语法。
不能把JAVASCRIPT代码嵌入到JAVA中
另外我在前面还加了<%@ page import = "news.*,zntt.*,sqmy.*,tpxw.*,jsgy.*,jsfc.*,czyz.*,announce.*,config.Constants" %>
<%@ page import = "java.util.List" %>
<%@ page contentType="text/html;charset=GBK" %>
这三句呢!是不是他们的问题呢
<%@ page import = "news.*,zntt.*,sqmy.*,tpxw.*,jsgy.*,jsfc.*,czyz.*,announce.*,config.Constants" %>
<%@ page import = "java.util.List" %>
<%@ page contentType="text/html;charset=GBK" %><SCRIPT language=JavaScript>
<%
List v7=(List)session.getAttribute(Constants.TPXW1_LIST_KEY);
Tpxw tpxw=null;
if(v7!=null){
for(int i=0;i<v7.size();i++){
tpxw=(Tpxw)v7.get(i);
out.print(tpxw.getImage());
out.print(tpxw.getTitle());
}
}%>
</script>
但只要去掉<SCRIPT language=JavaScript>这个就能执行这段程序了。我给怎么改呢?谢谢!
1、out.print只是jsp中把内容输出到浏览器中,至于放到什么位置就看你的需要了。放到javascript中那办出的要一定是javascript语法!
2、你的out.print出来的要是javascript语法吧,否则会出错,要么你你的out.print不要写在
javascript中。
List v7=(List)session.getAttribute(Constants.TPXW1_LIST_KEY);
Tpxw tpxw=null;
%>
<SCRIPT language=JavaScript>
var a=new Array();
<%
int j=0;
if(v7!=null){
for(int i=0;i<v7.size();i++){
tpxw=(Tpxw)v7.get(i);
%>
a[<%=j%>]=<%=tpxw.getTitle()%>;
<% j++;
}
}%>
</script>
我这样写有错没呢?
把js程序放在jsp开始的地方,当页面打开的时候,会被执行的。
我写了一个简单的jsp如下,你放在tomcat的目录下执行一下,就知道了。<%@ page import = "java.util.List" %>
<%@ page import = "java.util.ArrayList" %>
<%
List v7= new ArrayList();
v7.add("1");
v7.add("2");
%>
<SCRIPT language=JavaScript>
var a=new Array();
<%
if(v7!=null){
for(int i=0;i<v7.size();i++){
%>
a[<%=i%>]=<%=v7.get(i).toString()%>;
<% }}
%>
alert(a);
</script>
for(int i=0;i<v7.size();i++){
tpxw=(Tpxw)v7.get(i);
%>
a[<%=i%>]=<%=tpxw.getTitle()%>;
我试了很多次。我就是觉得上面这几句有问题,我的目的就是从List中取出一个对象马上转换成Tpxw对象,再通过getTitle()方法取出想要的东西后付给数组a,但我每次运行时,都说网页有错误,不知道是啥错误,我去了所有的javascript代码后程序没的问题,可以输出结果。v7的确不为空,那为什么就是不把值传给a呢,还抱什么错啊?
但我还是不明白alley_zhan(晓柯)的程序能实现,我只是对了个对象转换,结果就出错,郁闷!
帮帮我啊,谢谢你们了!
tpxw.getTitle()假设值是aaa,那么你的script就是: bannerADtitle[0]=aaa;明显是错的嘛,
改成这样:bannerADtitle[<%=j%>]="<%=tpxw.getTitle()%>";
所有返回出来是字符串的都加上引号.
修改一下看看
bannerADlink[<%=j%>]='<%=tpxw.getId()%>';
有个问题请教一下
为何数组的下标不用i呢!