Jquery文件上传发送调用ajax,不带文件

Jquery文件上传发送调用ajax,不带文件,jquery,jquery-file-upload,Jquery,Jquery File Upload,一开始我知道这是没有道理的,但是,我得到了这个场景,我需要一点帮助,以找出最好的。让我们来解释一下: 注册一个用户后,我有一个页面,新用户用他的信息(普通输入文件)填写表单,然后,这个表单甚至可以(不是强制性的)上传配置文件图像(使用ajax,在本例中使用JqueryFileUpload插件)。问题是,如果用户不想上传图像,JqueryFileUplaod不会发送请求,因为它没有文件 我想检查是否有任何文件,如果没有,用普通的ajax请求发送请求。如果这是更好的方法,如何检查其中是否有任何文件?

一开始我知道这是没有道理的,但是,我得到了这个场景,我需要一点帮助,以找出最好的。让我们来解释一下:

注册一个用户后,我有一个页面,新用户用他的信息(普通输入文件)填写表单,然后,这个表单甚至可以(不是强制性的)上传配置文件图像(使用ajax,在本例中使用JqueryFileUpload插件)。问题是,如果用户不想上传图像,JqueryFileUplaod不会发送请求,因为它没有文件

我想检查是否有任何文件,如果没有,用普通的ajax请求发送请求。如果这是更好的方法,如何检查其中是否有任何文件?检查输入文件的值无效<代码>$(“#文件上传”).val()

这是我提交请求的代码:

HTML

<!-- others fields -->

<div id="file-uploader" class="pull-left">
      <button class="btn btn-primary btn-def">Choose File</button>
      <input id="fileupload" type="file" name="files" data-url="/profile/activate_profile">
</div>

您可能应该使用附加到表单而不是文件输入的插件,并且
$(“#fileupload”).val()
没有为您提供所选文件的名称?没有extacly输入文件没有为我提供所选文件的任何名称。但是有办法改变插件吗?你可以试试
$('#fileupload')[0]。files.length
,但这在旧IE中不起作用。嗯,是的,我一直与这个答案保持联系,但我更喜欢与旧IE兼容。谢谢你的帮助
// need to check if there is any image to upload if not 
// normal call ajax, if yes go next

$('#fileupload').fileupload({
            dataType: 'json',
            beforeSend: function(request) {
                return request.setRequestHeader("X-CSRF-Token", $("meta[name='_token']").attr('content'));
            },

            submit: function(e,data)
            {
               // add form vlues
                data.formData = {
                  'sport' : $('input[name="sport"]:checked').val(),
                  'city' :  $('#city').val(),
                  'country' : $('#form_location').val(),
                  '_token' : $('meta[name="_token"]').attr('content')
                };
            },

            add: function (e, data) {

                data.context = $('[data-go="finish"]')
                    .click(function () {
                        $(this).attr('disabled',true);
                        data.submit();
                    });
            },
            done: function (e, data) {

                // do my stuff
            }

        });