Valums FileUploader上传后服务器无响应

时间:2014-05-24 13:30:32

标签: javascript jquery ajax file-upload valums-file-uploader

我正在使用Valums FileUploader,我在上传文件后无法获取并阅读回复。基本上我试图在onComplete中使用有用的响应,无论是成功还是错误消息。

我在这里发现了另一篇文章,说服务器可能需要设置为内容类型的普通/文本。我查了一下,确实那就是设置。

无论如何,一直在做很多搜索并找到各种要检查的东西,但似乎没有什么能解决我的问题。

以下是上传者的一些缩写代码:

var uploader = new qq.FileUploaderBasic({

    button: document.getElementById('btnUpChange'),
    action: templateURL+'/upload.php',  
    allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],

    onSubmit: function(id, fileName) {

       },

    onComplete: function(id, fileName, responseJSON) {

        var fileMsg = responseJSON;

        console.log(fileMsg);

        $('#filemsg').html('<span class="red" >'+fileMsg+'</span>');
        }
    });

以上是上传后控制台上的文字:

"[uploader] xhr - server response received" 
"[uploader] responseText = File is too large"
[object Object]

我故意将$ sizeLimit设置为小,只是为了尝试获取消息而抛出错误。

我把上传的zip文件中包含的php.php文件复制并重命名,然后在最后添加:

$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');
$sizeLimit = 4 * 1024;

$uploader = new qqFileUploader($allowedExtensions, $sizeLimit);

// Call handleUpload() with the name of the folder, relative to PHP's getcwd()
$result = $uploader->handleUpload('uploads/', $replaceOldFile = true);

if ($result['success'] !== true) {
    echo $result['error'];
} else {
    echo $result['success'];
}

如果上传成功,我只返回一个onComplete方法。我尝试使用responseJSON.responseText,我得到的只是“未定义”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

找到解决方案......

首先,在php.php上我把这段代码放在最后:

echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);

然后,在onComplete函数中,可以像这样返回JSON响应:

onComplete: function(id, fileName, responseJSON) {

    var newFile = responseJSON.filename;
    var theError = responseJSON.error;

}

其中php.php中创建的响应数组中的键名可以是您想要的任何内容,并在示例中返回,如下所示:responseJSON。 keyname