【发布时间】:2011-04-01 09:57:58
【问题描述】:
我正在使用闪光灯网络摄像头拍照。它工作得很好,并通过 POST 返回一个 URL。
我正在使用 PHP 进行编码,并希望在收到此 POST 数据后显示它,问题是我没有重新加载页面。
我环顾四周,不确定动态加载这个数据数组。
我应该在哪里寻找? jQuery?
啊,想通了。我的 Flash 有一个内置的回调函数,所以我只需要从那里追加数据!
【问题讨论】:
我正在使用闪光灯网络摄像头拍照。它工作得很好,并通过 POST 返回一个 URL。
我正在使用 PHP 进行编码,并希望在收到此 POST 数据后显示它,问题是我没有重新加载页面。
我环顾四周,不确定动态加载这个数据数组。
我应该在哪里寻找? jQuery?
啊,想通了。我的 Flash 有一个内置的回调函数,所以我只需要从那里追加数据!
【问题讨论】:
jQuery 无法读取除了出现在 URL (GET) 中的请求数据之外的任何类型的请求数据。您将需要使用 PHP(或其他一些服务器端语言)来处理由 FLash 应用程序创建的响应。
由于您在处理过程中使用 Flash,因此您处于某种劣势,因为除非 Flash 应用程序具有某种 JavaScript“PhotoUploaded”事件通知,否则您的页面不会收到 Flash 刚刚完成的通知向您的服务器提交了需要检索和插入的图片。如果您可以修改 Flash 应用程序以生成外部 JavaScript 事件,那么您可以按照 Frankie 在他的回答中描述的那样继续操作;否则,如果修改 Flash 应用程序不是一个选项,那么另一种解决方案是让您的页面每隔一段时间(5-10 秒左右)向服务器发送一个请求,以检查是否有照片可供它使用显示呢。
以这种方式使用您的服务器设置轮询的最简单方法是确保从 Flash 上传的每张照片都有一个唯一的、预先确定的标识符,您的页面在初始加载时就知道该标识符。然后,您只需每隔几秒钟使用 AJAX 请求 ping 您的服务器,并将该唯一标识符传递给它,以便在存在时找到正确的图像。
基本示例:
function GetPhoto() {
$.get('/getphoto.php?ID=1541XJ55A6', function(response) {
if(response.ImageUrl !== "") {
$(".profile-image").attr("src", response.ImageUrl);
if(getPhotoTimer !== undefined) {
clearInterval(getPhotoTimer);
}
}
});
}
$(document).ready(function() {
var getPhotoTimer = setInterval("GetPhoto()", 10000); // every 10 seconds
});
【讨论】:
像这样(弹性代码):
// attach a function to the completeHandler
private function completeHandler(evt:Event):void {
javascriptComplete();
}
// declare the function that will call the javascript function
private function javascriptComplete():void {
var javascriptFunction:String = "galeryUploadComplete("+Application.application.parameters.opt+")";
ExternalInterface.call(javascriptFunction);
}
【讨论】: