none
javascript接受服务端的Array数组应该怎样弄? RRS feed

答案

  • 1,你可以直接传字符串格式的,因为服务器发送到js里面是字符串的格式。

    Public Function wenjian( a As String)

    你在vb里再转成Byte()。
    js是弱类型的语言,

    2,你可以试试VBArray对象

    varName = new VBArray(arrayData )
    传递这个试试、



    【孟子E章】
    • 已标记为答案 capfdbse 2009年10月15日 7:53
    2009年10月15日 6:36
    版主

全部回复

  • 采用json格式,或者将数组转成以逗号等分割的字符串,客户端再split
    【孟子E章】
    2009年10月15日 3:10
    版主
  • 我的数组里面存放的是一些文件内容的二进制,是从数据库的IMAGE字段读出来的,举个简单的例子吧!
    谢谢!
    2009年10月15日 3:44
  • 我用的是session来保存那个byte[],但是把session传到客户端时,不能正确地把session的内容赋给array,下面弹出的框的内容是 system.byte[];

    var bl = new Array('<%=Session["a"] %>')
    function aa()
    {
    alert(bl);
    }
    2009年10月15日 3:54
  • 文件内容的二进制放到客户端要进行什么处理呢?js适合处理二进制。
    你的真实目的是要实现什么功能?

    【孟子E章】
    2009年10月15日 4:42
    版主
  • <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default13.aspx.cs" Inherits="Default13" %>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected string GetArrayString()
        {
            ArrayList lst = new ArrayList();
    
            for (int i = 0; i < 5; i++)
                lst.Add(Guid.NewGuid());
    
            string ret = "";
            foreach (Guid g in lst)
                ret += (ret == "") ? g.ToString() : "|" + g.ToString();
    
            return ret;
        }
    </script>
    
    <script language="javascript">
        var bl = "<%= GetArrayString() %>"
        alert(bl);
    </script>
        
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        
        </form>
    </body>
    </html>


    知识改变命运,奋斗成就人生!
    2009年10月15日 4:47
    版主
  • <%@ Page Language="C#" AutoEventWireup="true" %>
    
    <script runat="server">
      String ret = "";
      protected void Page_Load(object sender, EventArgs e)
      {
        System.IO.FileStream fm = new System.IO.FileStream(Server.MapPath("~/log.txt"), System.IO.FileMode.Open);
        System.IO.BinaryReader b = new System.IO.BinaryReader(fm);
        Byte[] bs = b.ReadBytes((int)fm.Length);
        b.Close();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < bs.Length; i++)
        {
          sb.Append(bs[i] + ",");
        } 
        ret = sb.ToString();
        ret = ret.TrimEnd(',');
      }
    </script>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
      <title></title>
    
      <script type="text/javascript">
        var arrayData = Array(<%=ret %>);
        document.write(arrayData);
      </script>
    
    </head>
    <body>
      <form id="form1" runat="server">
      </form>
    </body>
    </html>
    
    2009年10月15日 5:07
    版主
  • 我用VB写了一个ACITIVEX控件,里面是一个建立文件的方法,但需要传进去一个byte[],因此,我想知道怎样把服务端获取的byte[]通过javascript传递到我那个activex控件里面去!

    2009年10月15日 5:09
  • ACITIVEX里面直接读服务器端的文件也是可以的吧。
    【孟子E章】
    2009年10月15日 5:11
    版主
  • 给的那个例子 我传进我的 acitivex里面去后,不能执行,脚本报错:type mismatch
    是不是传进去的数组有问题!

    我的ACTIVEX里面的那个方法是:
    Public Function wenjian(a() As Byte)

      Open "c:\\wxy.doc" For Binary As #1
      Put #1, , a
     
    End Function

    麻烦孟老师再看看,谢谢!

    2009年10月15日 6:03
  • 1,你可以直接传字符串格式的,因为服务器发送到js里面是字符串的格式。

    Public Function wenjian( a As String)

    你在vb里再转成Byte()。
    js是弱类型的语言,

    2,你可以试试VBArray对象

    varName = new VBArray(arrayData )
    传递这个试试、



    【孟子E章】
    • 已标记为答案 capfdbse 2009年10月15日 7:53
    2009年10月15日 6:36
    版主
  • 其实 
    Public Function wenjian( a As String)
    里面可以直接使用XMLHttp或者 INET等直接下载文件的,无需进行js传递

    【孟子E章】
    2009年10月15日 6:40
    版主
  •    参考  
             protected void Page_Load(object sender, EventArgs e)
            {
                string[] sa = { "1", "1", "1" };
                for (int i = 0; i < sa.Length; i++)
                {
                    ScriptManager.RegisterArrayDeclaration(this,"aa", sa[i]);
                }
            }
    2009年10月15日 7:36
  • 谢谢孟老师,已经可以了!
    我试过,用
    varName = new VBArray(arrayData ) 这种方式,还是不行;

    在vb里把string转成Byte()这种方式就可以了!
    2009年10月15日 8:23