javascript jQuery 文件上传插件不调用成功回调
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12891264/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jQuery file upload plugin not calling success callback
提问by Mirage
I am using jQuery fileupload plugin and I want to do some custom jQuery stuff once fileupload is done
我正在使用 jQuery fileupload 插件,我想在文件上传完成后做一些自定义的 jQuery 东西
from here https://github.com/blueimp/jQuery-File-Upload/wiki/Options
从这里 https://github.com/blueimp/jQuery-File-Upload/wiki/Options
Now it says this
现在它说这个
Callback for successful upload requests.
$('#fileupload')
.bind('fileuploaddone', function (e, data) {/* ... */})
Now I have defined this custom function for testing in my own js file
现在我已经定义了这个自定义函数用于在我自己的 js 文件中进行测试
$('#fileupload').bind('fileuploaddone', function (e, data) {/* ... */
alert('Hello');
})
But it's not working.
但它不起作用。
But if I edit the main file in here
但是如果我在这里编辑主文件
// Callback for successful uploads:
done: function (e, data) {
Then it works.
然后它起作用了。
采纳答案by Reflective
Looking at the library code, seems all events are renamed removing 'fileupload' ... so 'fileuploaddone' becomes just 'done'. It is valid for all other callbacks. look at this section:
查看库代码,似乎所有事件都被重命名为删除“fileupload”……所以“fileuploaddone”变成了“done”。它对所有其他回调都有效。看看这个部分:
// Other callbacks:
// Callback for the submit event of each file upload:
// submit: function (e, data) {}, // .bind('fileuploadsubmit', func);
// Callback for the start of each file upload request:
// send: function (e, data) {}, // .bind('fileuploadsend', func);
// Callback for successful uploads:
// done: function (e, data) {}, // .bind('fileuploaddone', func);
// Callback for failed (abort or error) uploads:
// fail: function (e, data) {}, // .bind('fileuploadfail', func);
// Callback for completed (success, abort or error) requests:
// always: function (e, data) {}, // .bind('fileuploadalways', func);
// Callback for upload progress events:
// progress: function (e, data) {}, // .bind('fileuploadprogress', func);
// Callback for global upload progress events:
// progressall: function (e, data) {}, // .bind('fileuploadprogressall', func);
// Callback for uploads start, equivalent to the global ajaxStart event:
// start: function (e) {}, // .bind('fileuploadstart', func);
// Callback for uploads stop, equivalent to the global ajaxStop event:
// stop: function (e) {}, // .bind('fileuploadstop', func);
// Callback for change events of the fileInput(s):
// change: function (e, data) {}, // .bind('fileuploadchange', func);
// Callback for paste events to the pasteZone(s):
// paste: function (e, data) {}, // .bind('fileuploadpaste', func);
// Callback for drop events of the dropZone(s):
// drop: function (e, data) {}, // .bind('fileuploaddrop', func);
// Callback for dragover events of the dropZone(s):
// dragover: function (e) {}, // .bind('fileuploaddragover', func);
If you have some doubts about what's happening, just look at the code inside. This library is not compressed so it is easy to see. for example
如果您对正在发生的事情有一些疑问,只需查看里面的代码即可。这个库没有压缩,所以很容易看到。例如
// start: function (e) {}, // .bind('fileuploadstart', func);
start
callback is implemented. fileuploadstart
is not.
start
回调实现。fileuploadstart
不是。
回答by NXT
Check if the server-side uploading script returns a JSON reply - in my case it didn't work when the reply was empty, but file was uploaded successfully.
检查服务器端上传脚本是否返回 JSON 回复 - 在我的情况下,当回复为空时它不起作用,但文件已成功上传。
So, below is working for me with jQuery 1.9.1 and the newest version of the "jQuery File Upload Plugin" - 5.21.3
因此,下面对我使用 jQuery 1.9.1 和最新版本的“jQuery 文件上传插件” - 5.21.3
$("#fileupload").bind("fileuploaddone", function (e, data) {
console.log("fileuploaddone event fired");
});