js如何传递数组 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
benzhe
V2EX    Javascript

js如何传递数组

  •  
  •   benzhe 2011-06-27 02:21:23 +08:00 6258 次点击
    这是一个创建于 5227 天前的主题,其中的信息可能已经有所发展或是发生改变。
    var h = new Array();
    h['hid'] = ‘xx’;
    h['image'] = ‘xx’;
    h['title'] = ‘xx’;
    h['description'] = ‘xx’;

    如上面这种数组,是不是必须要先转换成字符串传递?或者有什么序列化的函数可用?
    15 条回复    1970-01-01 08:00:00 +08:00
    yuest
        1
    yuest  
       2011-06-27 02:35:05 +08:00
    JSON
    楼主也混淆了 Object 和 Array
    建议认真学一下基础,读语言精粹和权威指南这两本书
    chone
        2
    chone  
       2011-06-27 09:02:59 +08:00
    这里的传递是值传递?还是指数据传递到服务器?
    supersheep
        3
    supersheep  
       2011-06-27 09:39:38 +08:00
    lz是要传到到后端还是哪里?前后端交互就只能序列化成字符串再进行。
    另外,js中的关联数组实际上就是一个对象。以上代码可以简写成如下形式:
    var h = {
    hid:'xx',
    image:'xx',
    title:'xx',
    description:'xx'
    };
    效果是一样的。
    Hyperion
        4
    Hyperion  
       2011-06-27 10:03:44 +08:00
    得用JSON的类库. json.org有下载, 具体地址是 [https://github.com/douglascrockford/JSON-js]. 但好像IE内置了JSON类库?...

    JSON.stringify()方法可以把对象序列化.

    另外, js的array也是一个object, array的下标只允许数字...

    var h = new Array(); 应该改成 var h = {};

    你的写法是给你新建的array对象添加新成员...
    zythum
        5
    zythum  
       2011-06-27 10:10:17 +08:00
    lz基本上是把js的数组和php的数组混淆了。
    在js里h['image']和h.image是一样了。这里img是h的一个属性。不是数组的值。所以这个数组还是个空的数组。lz就差异了。"我不是付了值了啊怎么没有啊(> _ <)|| ",对吧
    Hyperion
        6
    Hyperion  
       2011-06-27 10:18:23 +08:00
    js的语法其实满悲剧的, 怎么写都能过. 就好像八抬大轿拉回来的[哔][哔], 但实际撩帘子的时候会发觉里面坐着的是凤姐...

    @zythum 唷! 朱一! 早!
    chone
        7
    chone  
       2011-06-27 10:21:54 +08:00
    @Hyperion 现代浏览器都原生支持JSON,IE6,IE7什么的不支持
    chone
        8
    chone  
       2011-06-27 10:25:59 +08:00
    @Hyperion 动态语言都这样吧。。。不过可以用jsliint,closure linter这类的做语法检查。
    zythum
        9
    zythum  
       2011-06-27 10:29:02 +08:00
    @Hyperion 早,不过好像也不早了哈。
    @chone 对于IE6,IE7什么的不支持的情况,那么类库或者工具是怎么做到的呢。直接当作字符串传过来然后各种正则比对?
    zythum
        10
    zythum  
       2011-06-27 10:32:12 +08:00
    @chone @Hyperion 说白了就是s的数组和php的数组写混了。
    朱一还是蛮喜欢这种非常自由化的语法。就是js面向对象的写法很多人接受不了。。。
    chone
        11
    chone  
       2011-06-27 10:45:28 +08:00
    @zythum https://github.com/douglascrockford/JSON-js/blob/master/json.js
    另外Javascript不OOP其实也没什么,关键看习惯和场合。
    benzhe
        12
    benzhe  
    OP
       2011-06-27 11:00:59 +08:00
    @zythum @Hyperion @supersheep @chone @yuest 传递到php。的确是把js的array和object混淆了,var h=new Object后整个世界都清静了
    zythum
        13
    zythum  
       2011-06-27 11:10:23 +08:00
    @chone 貌似跟朱一想的没什么大的出入。不是oop的很多复杂的东西就不好写。每个函数的参数表会特边长什么的。
    @benzhe 下次写的时候var h=new Object()直接写h={},var h=new Array()直接写h=[],var h=new String()直接写h='',这样效率会高很多。^^
    chone
        14
    chone  
       2011-06-27 11:15:29 +08:00
    @zythum 。。。OOP不是为了减少函数参数来的吧,虽然我也喜欢用基于class的OOP方式来组织代码。
    zythum
        15
    zythum  
       2011-06-27 11:47:26 +08:00
    @chone 当然不是。。。。啦。。。。为了说话总被你抓把柄。。。。TAT
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1249 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 17:29 PVG 01:29 LAX 10:29 JFK 13:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86