调用的js代码如下:其中data中MyArray()是要传递的参数,是数组。 
<script language="JavaScript" id="testScript" src="topmenu.js" data=" <%=MyArray()%>" > </script> ------------------- 
js文件:topmenu.js 如下 document.getElementById('testScript').getAttribute('data'); // 取得data中的值 
document.write();  //输出 怎样才能在js文件中正确输出数组中的所有值呢? 
我尝试了好几种方法: 
一:直接把把从data标签中取得的值赋予一个js新建数组,如下: 
var arr=new Array(); 
arr=document.getElementById('testScript').getAttribute('data'); 
for (x in arr) 

  document.write(arr[x]);  //输出 undefined  ????? 
} 二:传进来的参数是一个数组,我不再新建数组。 
var arr=document.getElementById('testScript').getAttribute('data'); 
for (x in arr) 

  document.write(arr[x]);  //输出 undefined  ????? 
}

解决方案 »

  1.   

    首先要搞清楚服务器端语言(asp)的数组类型 和 客户端语言(javascript)的数组类型 不可以混为一谈,他们之间可以通过固定格式,互相都可简易解析的字符串交互,比如json.
      

  2.   

    楼上能不能说的详细点,不太明白。你的意思是不是把服务器端语言(asp)的数组转化为字符窜,来与客户端语言(javascript)交互,这个方法我试了,是可以的,能够传递成功。但我想用数组来进行传参,因为项目要求,在源代码里不能显示所传参数的内容,如果要用字符窜,则不能达到要求。所以我想用数组。
      

  3.   

    我不需要 服务器和客户端的 数据相互转换,只要能把服务器上的数据以数组的形式 传递到javascript上去,就可以了。 我正在看二楼所说 json ,希望能找到一点思路。
      

  4.   

    外面设一个window["xxx"]=数组
    传递xxx
    在里面获取
      

  5.   

    什么后台先?asp的我这里有现成的,数组,list,对象都可以传随意弄...
      

  6.   

    在后台把你的要传送到页面的数组,变成有规律的字符串(json格式,或者你自己能解析的格式就行),送到前台(弄个隐藏控件在页面即可),前台js获取这个字符串进行解析。
    想要直接把服务器端的数组传递到客户端是不可能的!
      

  7.   

    通过插件是完全可能的,用Ajaxpro。自动帮你生成响应的json,不需要自己去序列化和反序列化,来回传,不过貌似现在就.net的能用,如果是jsp或者别的,自己生产json吧,说白了吧,后台到前台怎么穿都是字符串,要达到你说的那个要求其实直接用普通字符串也能达到....你在得到数据的时候直接用变量接住,然后进行拼接就可以了,如果这都达不到你的要求,我想没得办法了。
    数据库读取出来->封装入model->将多个model连接起来->list->遍历list拼接字符串,这当中我想不出为什么会出现内容...当然有更好的做法,可是我怎么都想不到会直接写传输内容的情况,楼主给点代码出来大家才好帮忙...
      

  8.   

    两种方法:
    1.你把数组MyArray()里面的内容组织成json形式的字符串
    如果:
     [a:1,b:2,c:3]
    然后用eval就可以作为js的数组赋值给js数组了2.也是组织成字符串,然后用js重新拆分字符串,但不如第一种方便