【问题标题】:FineUploader error after processing Coldfusion page处理 Coldfusion 页面后 FineUploader 错误
【发布时间】:2013-03-20 03:00:53
【问题描述】:

我已经实现了最新版本的 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 格式,而且必须具有“成功”:“真”的名称/值对。

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

{"name":"Peter"}

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

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

【问题讨论】:

    标签: coldfusion fine-uploader


    【解决方案1】:

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

    {
      "success" : "true"
    }
    

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

    【讨论】:

    • 谢谢。你是对的。虽然 JSON 对象可以是任何 JSON 对象,但它必须具有“成功”:“真”的名称/值对,如您所指示的那样,该功能才能正常工作,即使该名称/值对不需要有效JSON。
    • @Leigh - 因为使用的工具实际上被称为“Fine Uploader”(而不是文件),所以我将文本恢复了原状。我试图输入它作为对回滚的评论,但没有看到如何。
    • @Miguel-F - 哎呀,你是对的! (大脑会看到它期望看到的东西 ;-) 感谢您的修复。
    【解决方案2】:

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

    您的代码应该类似于:

    <cfoutput>#serializeJSON(YourCFVariableHere)#</cfoutput>
    

    【讨论】:

    • 谢谢,我已经尝试过了,但只是为了确保我再次尝试过。同样的错误。这是代码:&lt;cfset sData = StructNew() /&gt; &lt;cfset sData["name"] = "Peter" /&gt; &lt;cfoutput&gt;#serializeJSON( sData )#&lt;/cfoutput&gt;
    • 该代码对我来说很好用。你有任何错误吗?请记住,默认情况下,ColdFusion 将在 JSON 输出前加上 //
    • 没有错误,这很奇怪。只是显示“上传失败”的红色对话框,以及我输入的“错误”警报。除此之外,Firebug 中没有任何错误。返回的响应是:{"name":"Peter"}
    • 好的,这样JSON输出就正确了。您的“原因”变量是否包含任何有用的信息?
    • Reason unknown 有帮助,我知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    相关资源
    最近更新 更多