0

我已经实现了最新版本的 FineUploader,它可以完美地呈现在我的页面上。

 $(document).ready(function () {
    $('#jquery-wrapped-fine-uploader').fineUploader({
      request: {
        endpoint: 'fu/fineuploader.cfm'
      }
    }).on('error', function(event, id, name, reason) {
        alert('error');
      })
      .on('complete', function(event, id, name, responseJSON){
        alert('complete');
      });
  });

然后我选择了一个文件,它成功地联系了 Coldfusion 页面。如果我查看调试器工具/控制台,我可以看到 Coldfusion 页面的响应。如果我对 FORM 数据进行 CFDUMP,我也会看到文件正在传递。所以到目前为止一切正常。

但是,一旦完成 Coldfusion 页面,调用页面就会触发“错误”功能并警告“错误”。

如果我查看调试器/控制台,则没有错误。所以我不明白为什么控件仍然返回错误。我怀疑错误可能是我从 cfm 页面返回的内容,目前是(这是目前 cfm 页面中写的全部内容):

<cfoutput>#serializeJSON( 'true' )#</cfoutput>

有人看到这里有什么问题吗?我真的不知道去哪里尝试解决这个问题,因为没有错误。

我正在使用 CF10、FineUploader 3.3、Chrome

提前致谢。

已接受答案的更新/附录:

基本上,响应不仅必须是正确的 JSON 格式,而且还必须具有“success”:“true” 的名称/值对。

所以,之前,我返回的 JSON 是这样的,它是有效的 JSON,但失败了:

{"name":"Peter"}

但是,它只有在添加“success”:“true”名称/对后才开始正常工作:

{"success":"true","name":"Peter"}
4

2 回答 2

4

成功上传后,您的 JSON 响应必须返回值为“true”的键“success”。:

{
  "success" : "true"
}

如果 Fine Uploader 没有看到值为“true”的 JSON 键“success”,则假定上传在服务器端失败。响应中还可以包含其他 JSON 属性。

于 2013-03-18T20:26:16.057 回答
1

您需要在serializeJSON()调用中指定 ColdFusion 变量(要序列化的变量)。此外,通过将“true”指定为serializeJSON()函数的第二个参数,您实际上是在告诉它创建 WDDX 输出,而不是 JSON。 请参阅此处的 SerializeJSON 文档

您的代码应类似于:

<cfoutput>#serializeJSON(YourCFVariableHere)#</cfoutput>
于 2013-03-18T19:16:28.817 回答