【问题标题】:Good way to serialize a list? - Javascript/AJAX序列化列表的好方法? - Javascript/AJAX
【发布时间】:2011-05-29 04:45:50
【问题描述】:

只是想问这个问题,因为 stackoverflow 上总是会弹出珠宝 :)

我有以下列表:

list1 = [['command','arg1','arg2'], ['command2','arg1'], ... ]

您建议如何将其转换为字符串以便作为 ONE GET 参数传递?

例如

http://webgame_site.com/command_list/?data=...

我目前正在做的是使用逗号分隔列表 , ; ,但我不喜欢这个想法,因为如果我决定在字符串中引入这些方法会中断。

我正在尝试尽可能紧凑。


我的一个想法是将列表编码为 base64:

[['command','arg1','arg2'], ['command2','arg1']]
=> "W1snY29tbWFuZCcsJ2FyZzEnLCdhcmcyJ10sWydjb21tYW5kMicsJ2FyZzEnXV0="

比URIencode短


有什么想法吗? :)

【问题讨论】:

    标签: javascript jquery ajax arrays serialization


    【解决方案1】:

    jQuery.param() 听起来不错。

    【讨论】:

    • 您好,感谢您的回复! :) 不幸的是,该方法极大地膨胀了数据,我试图尽可能紧凑。
    【解决方案2】:

    将其转换为 json,然后使用 encodeURI 对字符进行编码。

    var list1 = [['command','arg1','arg2'], ['command2','arg1']];
    var encoded = encodeURI(JSON.stringify(list1));
    
    alert(encoded);
    

    为 base64 编辑:

    var list1 = [['command','arg1','arg2'], ['command2','arg1']];
    var encoded = btoa(JSON.stringify(list1));
    
    alert(encoded);
    alert(atob(encoded));
    

    【讨论】:

    • @david:谢谢!关于如何减少字符串长度的任何想法?
    • 不是真的,您可以尝试 base64 编码(我会将其添加到答案中),但如果您传递的列表非常庞大,您可能应该使用帖子。
    • 哦,哈哈哈你也有同样的想法>
    • @david:哈哈,我们同时发的! :) 顺便说一句,如果我能让跨域 POSTing 正常工作,那么帖子会很好。其中之一是 IE 限制了 URL 的长度。
    • 这里的人用 iframe 做了一些疯狂的事情来让跨域帖子正常工作:stackoverflow.com/questions/298745/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2016-06-24
    相关资源
    最近更新 更多