title: jquery file upload issue with ie9
body: <p>I am having problems getting the plugin jquery file upload to work on ie9 - this script works fine on firefox, chrome and edge.</p>
  
  <p>my problem is the add function being hit but the funtion data.submit() doesnt post the file to server :: no packet sent to server &amp; no error in the debug console of ie.</p>
  
  <p>Here is my html : </p>
  
  <pre><code>&lt;form id="upload" method="post" action="upload"
      encoding="multipart/form-data" enctype="multipart/form-data"&gt;
      &lt;div id="drop"&gt;
          Drop Here &lt;a&gt;Browse&lt;/a&gt; &lt;input type="file" id="upl" name="upl"
              multiple="multiple" /&gt;
      &lt;/div&gt;
  
      &lt;ul&gt;
          &lt;!-- The file uploads will be shown here --&gt;
      &lt;/ul&gt;
  
  &lt;/form&gt;
  &lt;script src="/assets/pages/scripts/uploadplugin/js/jquery.knob.js"&gt;&lt;/script&gt;
  &lt;!-- jQuery File Upload Dependencies --&gt;
  &lt;script src="/assets/pages/scripts/uploadplugin/js/jquery.ui.widget.js"&gt;&lt;/script&gt;
  &lt;script src="/assets/pages/scripts/uploadplugin/js/jquery.fileupload.js"&gt;&lt;/script&gt;
  &lt;script src="/assets/pages/scripts/uploadplugin/js/jquery.iframe-transport.js"&gt;&lt;/script&gt;
  &lt;!--[if lt IE 10]&gt; &lt;script src="/assets/pages/scripts/uploadplugin/js/jquery.xdr-transport.js"&gt;&lt;/script&gt; &lt;![endif]--&gt;
  &lt;script src="/assets/pages/scripts/uploadplugin/js/script.js"&gt;&lt;/script&gt;
  </code></pre>
  
  <p>Here is the script.js</p>
  
  <pre><code>// Initialize the jQuery File Upload plugin
  $('#upload').fileupload({
  
      forceIframeTransport: !!ie,
  
      // This element will accept file drag/drop uploading
      dropZone: $('#drop'),
      autoUpload: true,
      // This function is called when a file is added to the queue;
      // either via the browse button, or via drag/drop:
      add: function (e, data) {
  
          var tpl = $('&lt;li class="working"&gt;&lt;input type="text" value="0" data-width="48" data-height="48"'+
          ' data-fgColor="#0788a5" data-readOnly="1" data-bgColor="#3e4043" /&gt;&lt;p&gt;&lt;/p&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;');
  
          // Append the file name and file size
          tpl.find('p').text(data.files[0].name)
          .append('&lt;i&gt;' + formatFileSize(data.files[0].size) + '&lt;/i&gt;');
  
          // Add the HTML to the UL element
          data.context = tpl.appendTo(ul);
  
          // Initialize the knob plugin
          tpl.find('input').knob();
  
          // Listen for clicks on the cancel icon
          tpl.find('span').click(function(){
  
              if(tpl.hasClass('working')){
                  jqXHR.abort();
              }
  
              tpl.fadeOut(function(){
                  tpl.remove();
              });
  
          });
  
          // Automatically upload the file once it is added to the queue
          var jqXHR = data.submit();
          console.dir(jqXHR);
          console.log(jqXHR.state());
  
      },
  
      progress: function(e, data){
  
          // Calculate the completion percentage of the upload
          var progress = parseInt(data.loaded / data.total * 100, 10);
  
          // Update the hidden input field and trigger a change
          // so that the jQuery knob plugin knows to update the dial
          data.context.find('input').val(progress).change();
  
          if(progress == 100){
              data.context.removeClass('working');
          }
      },
      done: function(e, data){
          var r = data.result;
  
          var tmp = $('&lt;div class="row"&gt;&lt;div class="col-md-12"&gt;&lt;div class="portlet box red"&gt;&lt;div class="portlet-title"&gt;&lt;div class="caption"&gt;&lt;i class="fa fa-gift"&gt;&lt;/i&gt;Portlet &lt;/div&gt;&lt;div class="tools"&gt;&lt;a href="javascript:;" class="collapse"&gt;&lt;/a&gt;&lt;a href="#portlet-config" data-toggle="modal" class="config"&gt;&lt;/a&gt;&lt;a href="" class="fullscreen"&gt;&lt;/a&gt;&lt;a href="javascript:;" class="reload"&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul class="nav nav-tabs"&gt;&lt;li&gt;&lt;a href="#portlet_tab_3" data-toggle="tab"&gt; Tab 3 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#portlet_tab_2" data-toggle="tab"&gt; Tab 2 &lt;/a&gt;&lt;/li&gt;&lt;li class="active"&gt;&lt;a href="#portlet_tab_1" data-toggle="tab"&gt; Tab 1 &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="portlet-body"&gt;&lt;div class="tab-content"&gt;&lt;div class="tab-pane active" id="portlet_tab_1"&gt;&lt;p&gt; Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.ut laoreet dolore magna ut laoreet dolore magna. ut laoreet dolore magna. ut laoreet dolore magna. &lt;/p&gt;&lt;/div&gt;&lt;div class="tab-pane" id="portlet_tab_2"&gt;&lt;p&gt; Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmodtempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo. &lt;/p&gt;&lt;/div&gt;&lt;div class="tab-pane" id="portlet_tab_3"&gt;&lt;p&gt; Ut wisi enim ad btn-smm veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;');
          tmp.appendTo(resultdiv);
          console.log(r);
      },
      fail:function(e, data){
          // Something has gone wrong!
          console.log(data.jqXHR.responseText);
          console.dir(data);
          data.context.addClass('error');
      },
      processalways: function(e,data){
          console.dir(data);
          if (data.files.error) alert(data.files[0].error);
      }
  
  });
  </code></pre>
  
  <p>None of the functions done, fail, success nor processalways is been hit.
  Thanks in advance.</p>