在AJAX模态窗口中上传文件(电梯)

时间:2011-08-10 21:08:36

标签: ajax scala lift

有没有人设法在电梯的AJAX模式窗口中创建工作文件上传?我试过用这样的东西:

ajaxForm(
    bind("upload", template,
        "file" -> SHtml.fileUpload(processFile _),
        "submit" -> SHtml.ajaxSubmit("Submit", () => { 
            println("Submitted") 
            Noop
        })
    )
)

当我按下“提交”按钮时,连接到按钮的功能被执行(我在控制台上看到“已提交”),但processFile被省略,我对上传的文件无能为力。

我正在使用List 2.3和Scala 1.8.1。

1 个答案:

答案 0 :(得分:4)

我认为你在这里交叉。 SHtml.fileUpload旨在在Form中用于在提交时捕获FileParamHolder。如您所知,这将导致您的操作URL发布POST,这可能对您的模式没有帮助。如果您在fileUpload的Exploring Lift页面上看到该示例,您将看到fileUpload用法:

bind("e", in,
     ...
     "receipt" -> SHtml.fileUpload(fileHolder = _),
     "tags" -> SHtml.text(tags, doTagsAndSubmit))
}

你正在使用一个不发送表单的ajaxSubmit,它只是在服务器端调用一个方法并返回JsCmd - 在你的情况下是println _Noop。这就是为什么你没有看到任何文件。

如果你想做ajax样式文件上传,请查看this link以查看示例。 github here上还有一个工作示例,它使用了很棒的jQuery File Upload插件。