Swfupload:如何解析从upload.php脚本返回的数据

swfupload: how to parse returned data from upload.php script?

本文关键字:脚本 返回 数据 php upload 何解析 Swfupload      更新时间:2023-09-26

谷歌了大约1个小时,仍然找不到如何执行这个简单的任务!

upload.php以

结尾
    echo "FILEID:" . $randomid; // Return the file id to the script

正在尝试获取这个FILEID:

          function uploadSuccess(serverData) {
        alert(serverData);
      }

Alerts [object object]。文档没有任何帮助。没有可用的例子。

请帮忙!

嗯,首先,我认为你的uploadSuccess输入参数是错误的。文档说明:uploadSuccess(文件对象,服务器数据,接收到的响应)是正确的签名。

所以对于初学者来说,你需要在你的成功回调中抛出一些额外的参数:)其次,serverData是你的服务器输出。在您的示例中,看起来响应将是{"FILEID": "somerandomid"}(我假设它作为JSON返回,尽管这可能是一个错误的假设)

在任何情况下,要访问随机创建的id,只需执行

function uploadSuccess(fileObject, serverData, response){
    alert(serverData.FILEID); 
 }

另外,你应该使用Firebug,这是Firefox的一个插件。它将允许您在回调函数上放置一个断点,并允许您查询serverData以准确地查看其中的内容。

解决!其实要简单得多。为什么我总是想得很复杂?函数uploadSuccess(fileObject, serverData, response) {alert(serverData);}

我使用JSON与SWFUpload。读取FILEID (@Eric建议)的问题是SWFUpload从上传的文件返回文件名(例如,客户端已将"test.txt"上传到服务器,这是它返回的文件的名称)。这是可以的,但是如果你有一个重命名文件的PHP脚本(以避免替换),那么如果这个文件存在,那么服务器上的文件名不是"test.txt",而是"test(2).txt"。

uploadSuccess中,我使用:

.on('uploadSuccess', function(event, file, serverData){
    var responseData = jQuery.parseJSON(serverData);
    var upload_url_tmp = responseData["name"];
    [...]
在服务器端,我使用了:
$data = array('name' => $file);
    echo json_encode($data);

请注意$file var是保存在服务器上的文件的名称(在重命名之后)。