我在做一个东西时。要把通过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>

解决方案 »

  1.   

    可以嵌套写.不知道是不是你要的效果:jsp页面:<INPUT type="button" stype="Image" class="button_style" value="生成计划单" onclick="goBOM('<bean:write name="row" property="productid"/>','<bean:write name="row" property="quantity"/>','<bean:write name="pid" />','<bean:write name="row" property="code" />',tabstemp);"></TD>
    脚本:
    <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>
      

  2.   

    你的Tpxw tpxw=null;是什么?是不是错在这里?
      

  3.   

    如果能通过JAVA环境编译,那基本不是JSP代码的问题了。
    你看看运行后的页面的源代码,如果JS代码有问题页面是会报错的。
    你根据错误找到源代码的地方,看看是不是生成的代码不符合JAVASCRIPT的语法。
      

  4.   

    可以把JSP代码嵌入到JAVASCRIPT中,
    不能把JAVASCRIPT代码嵌入到JAVA中
      

  5.   

    我发现个严重问题。我把javascript代码去了以后就可以执行jsp代码了,不知道怎么回事哦。
      

  6.   

    我发现上面的程序根本就没执行jsp程序,不知道是什么问题啊?各位帮帮我。一定重谢
    另外我在前面还加了<%@ page import = "news.*,zntt.*,sqmy.*,tpxw.*,jsgy.*,jsfc.*,czyz.*,announce.*,config.Constants" %>
    <%@ page import = "java.util.List" %>
    <%@ page contentType="text/html;charset=GBK" %>
    这三句呢!是不是他们的问题呢
      

  7.   

    那是你的javascript的问题 两者嵌套使用肯定是没有问题的 关键是你的javascript中的方法只有被调用以后才会起作用
      

  8.   

    javascript本身是不会自动调用自己的。需要你触发一个事件才能去使用。
      

  9.   

    那嵌套在里的jsp程序也要调用才会执行吗?
      

  10.   

    那也太难了吧。我把从数据库中的东西传给javascript数组,还要经过这样啊。那该怎么办呢?
      

  11.   

    我这段代码就是不执行啊!
    <%@ 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>这个就能执行这段程序了。我给怎么改呢?谢谢!
      

  12.   

    你先搞清楚再做什么!
    1、out.print只是jsp中把内容输出到浏览器中,至于放到什么位置就看你的需要了。放到javascript中那办出的要一定是javascript语法!
    2、你的out.print出来的要是javascript语法吧,否则会出错,要么你你的out.print不要写在
    javascript中。
      

  13.   

    <%
    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>   
    我这样写有错没呢?
      

  14.   

    应该没有错呀,保证你用到的java类都import正确了。
    把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>
      

  15.   

    if(v7!=null){
     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(晓柯)的程序能实现,我只是对了个对象转换,结果就出错,郁闷!
    帮帮我啊,谢谢你们了!
      

  16.   

    这句错了:bannerADtitle[<%=j%>]=<%=tpxw.getTitle()%>;
    tpxw.getTitle()假设值是aaa,那么你的script就是:  bannerADtitle[0]=aaa;明显是错的嘛,
    改成这样:bannerADtitle[<%=j%>]="<%=tpxw.getTitle()%>";
    所有返回出来是字符串的都加上引号.
      

  17.   

    我记得是可以的
    修改一下看看
    bannerADlink[<%=j%>]='<%=tpxw.getId()%>';
    有个问题请教一下
    为何数组的下标不用i呢!