Javascript 当成功上传没有响应内容时,如何避免fine uploader中的错误事件?
我已经将FineUploader配置为使用CORS并使用我的Amazon Web服务S3存储桶 我面临的问题是,成功上传不会返回任何响应内容(尽管状态代码为204,但响应内容为空)。因此,即使上传发生(我已验证文件已上传),也会触发错误事件。这大概是因为没有回应 我怎么处理这个案子?我是否有办法通过在“onError”回调中捕获此错误来手动触发“success” 编辑: 我在这里挖了些东西。该错误似乎源于Javascript 当成功上传没有响应内容时,如何避免fine uploader中的错误事件?,javascript,amazon-s3,fine-uploader,Javascript,Amazon S3,Fine Uploader,我已经将FineUploader配置为使用CORS并使用我的Amazon Web服务S3存储桶 我面临的问题是,成功上传不会返回任何响应内容(尽管状态代码为204,但响应内容为空)。因此,即使上传发生(我已验证文件已上传),也会触发错误事件。这大概是因为没有回应 我怎么处理这个案子?我是否有办法通过在“onError”回调中捕获此错误来手动触发“success” 编辑: 我在这里挖了些东西。该错误似乎源于handler.xhr.js 特别是在parseResponse(xhr)函数中 try{
handler.xhr.js
特别是在parseResponse(xhr)
函数中
try{
response = qq.parseJson(xhr.responseText);
}
catch(error) {
log('Error when attempting to parse xhr response text (' + error + ')', 'error');
response = {};
}
这似乎抛出了一个错误,因为响应是空的
有人知道什么是正确的回答吗?我正在考虑在这里添加一行,检查是否有空响应,然后手动插入正确的响应。问题在于
parseResponse()
函数。它希望成功上传后返回JSON字符串{“success”:true}
在我的例子中,Amazon返回一个带有204状态码的空响应。204状态代码
在我的案例中,我通过修改编辑中提到的部分修复了此问题,如下所示:
try {
if(xhr.status == 204 && xhr.responseText.length == 0){
response = qq.parseJson('{"success": true}');
}
else{
response = qq.parseJson(xhr.responseText);
}
}
希望这将有助于将来遇到此问题的其他人。您使用的是什么版本的jQuery?我刚刚查看了源代码,jQuery对
204
状态代码有一个特例,但它看起来应该触发success
我使用的是jQuery 1.9.1版本的jQuery,因为请求不是由jQuery发送或处理的。您对Fine Uploader的期望的评论对于上传POST请求是正确的。Fine Uploader目前能够发送两种不同类型的请求。一种类型,upload POST requests,需要有效的JSON响应,如文档中所述。这对于使用隐藏iframe中的表单上载文件的非文件API浏览器(IE9及更早版本)尤其重要。在这些情况下,无法确定客户端的响应代码。这项工作计划在不久的将来以本机方式支持直接上传到S3。请看。谢谢你让我知道。这是一个非常棒的插件。幸运的是,在这种情况下调试也很简单。嗨,Nikhil,我也遇到了同样的问题。一定要让我知道你把这个代码放在哪里了。在回调部分或其他地方??