2010-10-13 62 views
0

我正在使用mx.rpc.http.HTTPService从Web服务检索数据。在初始调用“loadWsData”时,HTTPservice准确地检索所有数据。HTTPService不检索当前数据

但是,在任何和所有后续调用HTTPService不会准确检索数据;而是总是检索第一个数据集。我已经确认,Web服务正在提供准确的数据,无论是来自Web浏览器还是ruby ws客户端脚本。

我的代码如下;关于什么可能是问题的任何想法?

private function loadWsData(id:int):void 
{ 
    var webService:HTTPService = new HTTPService(); 
    webService.url = "http://xxx.xxx.xxx.xxx:8080/profile/ + id; 
    webService.method = "GET";  
    webService.addEventListener(ResultEvent.RESULT, function(event:ResultEvent):void 
    { 
     var rawData:String = String(event.result); 
     var user:Object = JSON.decode(rawData).user; // User object always reflects the first data set retrieved. 
     .... 
     .... 
    }); 
    webService.send(); 
} 
+0

将数据源重新绑定到任何绑定的显示对象。 – 2010-10-13 16:58:38

+0

服务器缓存是什么东西?您可以尝试向URL添加一个随机URL变量,以强制服务器不缓存URL。这是我最好的猜测。 – JeffryHouser 2010-10-13 17:00:46

+0

没有该服务没有缓存。我尝试添加随机url变量,但它不起作用。还有其他建议吗? – dank106 2010-10-19 17:17:17

回答

0

不知道这个问题可能是什么,但我有几点建议在哪里看。

首先,您的代码中似乎存在一个错误; webService.url行缺少一个引号。这可能会搞砸你发送的认为的URL。奇怪的,但是,因为我不认为你所显示的东西会编译,所以我怀疑这只是一个剪切和粘贴错误,当你把它发布到StackOverflow,但我会追查出该URL只是为了确保。

此外,我没有看到代码来删除事件监听器(尽管它可能在你用省略号缩写的代码中)。除了你期望的事件之外,是否有可能还有徘徊的事件监听器?如果原始事件侦听器触发,它将使用原始数据触发。

另一个建议:不要使用闭包,尝试将其拉出到单独的函数。这不应该是问题,但也许范围在这里扮演一个角色。

您可以尝试发布您的结果。

您可能还会为FAULT添加事件侦听器,并查看是否有任何错误被您的服务请求抛出。