gpt4 book ai didi

jquery - 在grails中

转载 作者:行者123 更新时间:2023-12-02 15:54:56 25 4
gpt4 key购买 nike

我有这个jQuery代码:

 $(".inputFiles").on("change", function(e) {
var uploadedFiles = e.originalEvent.target.files;
var fileSize = 100;
var fileType = ["image/jpeg", "image/pjpeg"];

alert("length" + uploadedFiles.length)
for (var i = 0,len = uploadedFiles.length; i < len; i++) {
var n = uploadedFiles[i].name;
var s = uploadedFiles[i].size;
var t = uploadedFiles[i].type;


}
<g:remoteFunction action="testAjax" params="[files:uploadedFiles]" />
});

});

这是 Controller 中的 Action :
def testAjax() {
println ("ajax data "+params)
}

我总是将 params.files设置为null,尽管 alert("length" + uploadedFiles.length)显示的是已上传文件的数量,并且我也想在成功或失败的情况下更新 <p id="msgs"/>

我也对下面的 <g:remoteFunction action="testAjax" params="[files:uploadedFiles]" />感到厌倦,但是它没有达到 testAjax的 Action ,我该如何解决
$.ajax({ 
url:'/myApp/photos/testAjax',
type:'POST' ,
dataType: 'JSON',
data: {files: uploadedFiles},
success: function(data) {
alert ("all files uploaded" + data);
},

error: function(data,textStatus) {alert("something went wrong " + textStatus);},
complete : function (){
alert("all done fine");
}

});

最佳答案

在您的示例中,数据输出将类似于:

data: {'files':'uploadedFiles'}

因为:
if(attrs?.params instanceof Map) {
hasParams = true
out << attrs.remove('params').collect { k, v ->
"\'" +
"${k}".encodeAsJavaScript() +
"\': \'" +
"${v}".encodeAsJavaScript() +
"\'"
}.join(",")
}

这是来自remoteFunction taglib的代码的一部分。
最好的方法是编写自己的Ajax代码:
如果您发送文件,它将被发布,因此:
$.post("${createLink(action: 'testAjax', absolute:true)}", {files:uploadedFiles})

我认为它更容易,更干净。
希望对您有所帮助。

关于jquery - <g:remoteFunction>在grails中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com