Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何为AjaxUpload动态设置参数?_Jquery_File Upload - Fatal编程技术网

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) {
               }
           });