不可见的 Flash:通过使用不可见的 Flash Player 增强 Web 应用程序
2010-07-09 00:00:00 来源:WEB开发网该类使用 ExternalInterface 将 sendRequest 函数公开给 JavaScript。这在对象的构造函数中完成,和之前 清单 2 中的例子一样。sendRequest 函数有点复杂:它有两个必需的参数。第一个参数是需要调用的 URL。这是一个完整的 URL 字符串,包含所有请求参数。下一个是 JavaScript 函数名,此函数在获得服务器响应后由 Flash 调用。和典型的 Ajax 一样,Flash 对远程服务器进行异步调用,主 UI 线程在等待远程服务器响应时不会停止。因此,与 Ajax 一样,需要编写 callback 函数,它将在接收到服务器响应后被调用。将其作为字符串传递给 Flash,但它必须与函数名完全相同。
sendRequest 函数也有三个可选参数。ActionScript 允许有可选参数,但必须有可用的缺省值。第一个是使用 HTTP 方法,通常是 GET 或 POST。本文中,我将它默认为 GET,但是可以很容易地用 POST 将其替换,这取决于远程服务器的需要。下一个可选参数叫做 content。这是一个一般数据对象,包含有需要发送给远程服务器的任意名称-值对。向远程服务器发送数据时需要用到。最后一个可选参数是另一个用于头部的一般数据对象。它用于将定制 HTTP 头部设置为作为远程服务器调用的一部分发送。
然后代码获取所有这些参数,使用 Flash URLRequest 对象构造 HTTP 请求,然后使用 Flash URLLoader 类发送请求。事件监听器会绑定到 URLLoader 以便能处理返回的响应。这里创建一个闭包,如同在 JavaScript 中一样,创建一个匿名内联函数,将在 COMPLETE 事件被加载程序触发后调用。该闭包将只使用 ExternalInterface 来调用名称被传递给 sendRequest 的函数。它将来自远程服务器的所有数据传递给该函数。这显然比使用本地存储复杂一点。看看清单 6 中调用 Twitter 搜索的例子。
更多精彩
赞助商链接