欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

FLASH AS3与网页JS参数值传递的问题

程序员文章站 2022-03-20 10:14:08
让我们一干人等郁闷了1个多小时的一个问题,结果才发现,JS处理JSON结构的时候,如果JSON格式与所需的不符,则函数都不会执行。 问题起因:AS3调用PHP,PHP异步返回一个XML结构,AS3... 08-10-07...
让我们一干人等郁闷了1个多小时的一个问题,结果才发现,js处理json结构的时候,如果json格式与所需的不符,则函数都不会执行。

问题起因:as3调用php,php异步返回一个xml结构,as3取xml结构中的某些节点值赋给某个对象,然后通过与js交互将值传递给js。

调试过程:
ps item为php返回的xml:
varobj_info:object=newobject();
obj_info["from"]=item..from;
obj_info["context"]=item..text;

trace("usermessage-->messagefromservicechat::" obj_info);
trace("usermessage-->messagefromservicechatfrom::" obj_info["from"]);
trace("usermessage-->messagefromservicechatcontext::" obj_info["context"]);
this.dispatchevent(newmessageevent(messageevent.usergetsuccess,obj_info)); 此处输出:
usermessage-->messagefromservicechat::[objectobject]
usermessage-->messagefromservicechatfrom::[objectobject]
usermessage-->messagefromservicechatcontext::[objectobject] 这个obj_info对象就是传递给js的对象,而js需要的json结构为: { "from" : "...", "context" : "..." } ,这两个属性值都为string类型。

发现错误点:js内部调用函数时,在三种情况下调试:1、不传参数给函数;2、传一个正确类型和结构的json作为参数;3、传一个不正确类型和结构的json作为参数。 经过这三次调试后发现,如果json结构不正确,则js函数不会执行。 这样一来,问题就转到了flash传递给js的参数上。对比之前flash的调试输出的结果,确认flash从php获取到xml后,在给传递给js参数赋值的时候需要强制转换。

最后解决方法:修改赋值部分代码:
varobj_info:object=newobject();
obj_info["from"]=(item..from).tostring();
obj_info["context"]=(item..text).tostring();

trace("usermessage-->messagefromservicechat::" obj_info);
trace("usermessage-->messagefromservicechatfrom::" obj_info["from"]);
trace("usermessage-->messagefromservicechatcontext::" obj_info["context"]);
this.dispatchevent(newmessageevent(messageevent.usergetsuccess,obj_info));