Jquery 如何为AjaxUpload动态设置参数?
我创建了一个上传文件的函数,如下所示:Jquery 如何为AjaxUpload动态设置参数?,jquery,file-upload,Jquery,File Upload,我创建了一个上传文件的函数,如下所示: new AjaxUpload($('#addImage'), { action: 'SaveDataBank.aspx', name: 'uploadimage', dataType: 'json', params: { clientid: GetSelectedClient() } onSubmi
new AjaxUpload($('#addImage'), {
action: 'SaveDataBank.aspx',
name: 'uploadimage',
dataType: 'json',
params: { clientid: GetSelectedClient() }
onSubmit: function (file, ext) {
},
onComplete: function (file, response) {
}
});
我想在打开文件对话框之前执行一些任务。如何更新上述代码
更新:
我想通过文件上传动态传递一个参数。我有一个包含客户端ID列表的下拉列表。如果我点击上传按钮,它将打开文件对话框。然后,我希望它从下拉列表中传入所选的客户端。目前,它只传递最初选择的值
params: { clientid: GetSelectedClient() },
上述行不符合我的要求。第一个想法(不起作用)
尝试将单击处理程序绑定到按钮。如果不返回false或停止传播,它将在单击处理程序完成后触发文件上载程序:
$('#addImage').click(function(){
// code here
});
new AjaxUpload($('#addImage'), {
action: 'SaveDataBank.aspx',
name: 'uploadimage',
dataType: 'json'
});
这不起作用,因为AjaxUpload库创建了一个输入元素,当您将鼠标悬停在按钮上方时,它会将该元素放在按钮顶部。它实际上是您单击的输入元素
变通
绑定到您实际单击的输入的click事件。这在页面加载中不存在,因此我们必须使用jQuery:
有关工作示例,请参见
传递动态数据
要随文件上载一起传递动态数据,请在onSubmit
处理程序中添加setData
调用:
new AjaxUpload($('#addImage'), {
action: 'SaveDataBank.aspx',
name: 'uploadimage',
dataType: 'json',
onSubmit: function (file, ext) {
this.setData({clientid: GetSelectedClient()});
}
});
结论
这表明使用该库有点笨拙。您不单击按钮,因此不会获得正常的按钮效果(即,当鼠标按下时,按钮会缩进)。任何依赖按钮事件的JavaScript都不会按预期工作。您可以使用上述解决方案,但就个人而言,我会寻找另一个库。大概和。尝试:
$('#addImage').mousedown(function(){
//code here
});
或
根据,以下内容适用于您:
onSubmit : function(id, fileName){
var delete=$("#check-delete-previous").is(":checked");
this.setParams({ "deletePrevious" : delete });
},
请确保您使用的是最新版本,因为旧版本可能无法正确设置回调函数
编辑:
事实上,以下仅对我有效:
onSubmit : function(id, fileName){
var delete=$("#check-delete-previous").is(":checked");
this.params.deletePrevious = delete;
},
首先,可以设置全局对象:
然后,您可以通过AjaxUploadObj.设置更改属性的值
例如:
AjaxUploadObj.\u设置.操作=”http://mustrank.com/dosomething.php“在调用ajax之前,您是否应该调用您想要执行的函数?或者,如果您之前想要的函数是success,那么调用AJAX..我已经更新了我的答案,详细说明了如何向文件上载添加动态数据。我添加了setData,但它给了我一个错误:setData没有定义,它是一个实例函数,所以应该是
this.setData
。我会更新答案。非常好的答案!终于开始工作了。。非常感谢您在获得解决方案之前的长期支持。谢谢。
onSubmit : function(id, fileName){
var delete=$("#check-delete-previous").is(":checked");
this.setParams({ "deletePrevious" : delete });
},
onSubmit : function(id, fileName){
var delete=$("#check-delete-previous").is(":checked");
this.params.deletePrevious = delete;
},
AjaxUploadObj=new AjaxUpload($('#addImage'), {
action: 'SaveDataBank.aspx',
name: 'uploadimage',
dataType: 'json',
params: { clientid: GetSelectedClient() }
onSubmit: function (file, ext) {
},
onComplete: function (file, response) {
}
});