url传复杂json问题?

xtawgipl 2011-01-04 05:42:12
由于操作需要,需要把一个json传到别一个页面;
json的形式如下:


[var array = {"name":"XXX","introduce":"中文。。。。。。。。。。。","poster":"_poster.jpg","slimg":"list_ico0_4.png","sdimg":"list_ico1_4.png","detailBrightImg":"barBtn1_0.png","detailDarkImg":"barBtn0_0.png","myAppBrightImg":"b_ico0.png","myAppDarkImg":"b_ico0.png","widgetdownaddress":"../index.htm}]



使用的方面是:
传递页面:

window.location.href = "xxx.htm?array="+ window.encodeURIComponent(array)


接收页面:

var temp = window.decodeURIComponent(location.href.split("?")[1].split("&")[0].split("=")[1]);
alert(temp);
alert(temp.length);


现在碰到的问题是:
第一个alert出来的是:[object object,object object,object object](length 应该是3)这种形式。
第二个alert出来的是:47也就是他的字符形式时的长度。

网上找了好久没找到啥问题?

期待达人~~~
...全文
1213 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xtawgipl 2011-01-09
  • 打赏
  • 举报
回复
呵呵 。。。
感谢以上各位同学~~
结贴啦。。。
xtawgipl 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wdbjsh 的回复:]
另外,你这种传递方式有问题。最长只能传递256个字符,所以,如果是复杂json的话,建议食用post方式
[/Quote]
是的,url传值的大小是有限制,好像是2k吧。我想我传的这个json是不会大于这个值的。


[Quote=引用 13 楼 zxx870601 的回复:]
获取的JSON格式的数据要Eval(json数据)一下 这时候alert出的长度就是3
[/Quote]
我也eval过的,我用alert(eval("传过来的值"));结果没有弹出东东,不知道是为什么。。。

ps:后来还是用的笨方法,用了ajax再请求了一次服务器后台了。。。。
yousite1 2011-01-06
  • 打赏
  • 举报
回复
eval本身是执行脚本的命令,最好两边加个'号,不然值为空时会出错。
我在项目中是这样用的:
var arrRole = eval('<s:property value="convertListToJSON(#roleList)" escape="false" />');
''间计算结果是一个[[name: \'guo\', write:1]] 这样的值。中间不要有特殊字符,不然会出错。
中间如果有特殊字符记得要先转义一下。
xtawgipl 2011-01-05
  • 打赏
  • 举报
回复
呵呵 。。
hzrui 2011-01-05
  • 打赏
  • 举报
回复
Array.stringify,汗,楼主补一下json的知识吧,不懂也可以baidu一下JSON.stringify,不要随便猜测
xtawgipl 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hzrui 的回复:]
window.location.href = "xxx.htm?array="+ window.encodeURIComponent(array)
这个有问题,array不是字符串,需要把json转成字符串,
JSON.stringify
[/Quote]

之前用过array.jion和array.toString()都没起到作用,array.stringify这个是什么属性还没听过,不过写成这样后,接收参数的页面,不能接收到array了,alert(temp)的结果为undefined了。

------------------------------------------------


[Quote=引用 7 楼 happy664618843 的回复:]
先转换成json字符串 eval("++");
再解析!
[/Quote]

这个还真没看明白,是说先编译成字符串?(好像没有编译成字符串的吧。。。)
断续等~~~
zxx870601 2011-01-05
  • 打赏
  • 举报
回复
获取的JSON格式的数据要Eval(json数据)一下 这时候alert出的长度就是3
wdbjsh 2011-01-05
  • 打赏
  • 举报
回复
另外,你这种传递方式有问题。最长只能传递256个字符,所以,如果是复杂json的话,建议食用post方式
happy664618843 2011-01-04
  • 打赏
  • 举报
回复
先转换成json字符串 eval("++");
再解析!
hzrui 2011-01-04
  • 打赏
  • 举报
回复
window.location.href = "xxx.htm?array="+ window.encodeURIComponent(array)
这个有问题,array不是字符串,需要把json转成字符串,
JSON.stringify
xtawgipl 2011-01-04
  • 打赏
  • 举报
回复
我说的还不够清楚么?
你再看看?
xtawgipl 2011-01-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dyllove98 的回复:]
因为还有一层alert(temp['name']); 试试看
或者 alert(temp.name);
[/Quote]

 这个应该不行吧?
这都不是对象呀,现在传过来的是数组还是字符串还没定啊?(我要的是数组,但是看这样的结果,不知道是数组还是字符串)
Jlins 2011-01-04
  • 打赏
  • 举报
回复
因为还有一层alert(temp['name']); 试试看
或者 alert(temp.name);
aaajedll 2011-01-04
  • 打赏
  • 举报
回复
没看明白什么,请把问题说清楚
xtawgipl 2011-01-04
  • 打赏
  • 举报
回复
更正下:
[var array = {"name":"XXX","introduce":"中文。。。。。。。。。。。","poster":"_poster.jpg","slimg":"list_ico0_4.png","sdimg":"list_ico1_4.png","detailBrightImg":"barBtn1_0.png","detailDarkImg":"barBtn0_0.png","myAppBrightImg":"b_ico0.png","myAppDarkImg":"b_ico0.png","widgetdownaddress":"../index.htm}]

-->
var array = [{"name":"XXX","introduce":"中文。。。。。。。。。。。","poster":"_poster.jpg","slimg":"list_ico0_4.png","sdimg":"list_ico1_4.png","detailBrightImg":"barBtn1_0.png","detailDarkImg":"barBtn0_0.png","myAppBrightImg":"b_ico0.png","myAppDarkImg":"b_ico0.png","widgetdownaddress":"../index.htm}]

坐等答案~~~

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧