Advertisement
mogaj

fileUploadXhr

May 28th, 2013
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. POST http://projectnirvana.runcode/guests/new 500 (Internal Server Error) jquery-1.8.1.min.js:2
  2. send jquery-1.8.1.min.js:2
  3. p.extend.ajax jquery-1.8.1.min.js:2
  4. fileUploadXhr jquery.form.js:263
  5. $.fn.ajaxSubmit jquery.form.js:200
  6. doAjaxSubmit jquery.form.js:719
  7. p.event.dispatch jquery-1.8.1.min.js:2
  8. g.handle.h
  9.  
  10. --------------------------
  11.  // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
  12.     function fileUploadXhr(a) {
  13.         var formdata = new FormData();
  14.  
  15.         for (var i=0; i < a.length; i++) {
  16.             formdata.append(a[i].name, a[i].value);
  17.         }
  18.  
  19.         if (options.extraData) {
  20.             for (var p in options.extraData)
  21.                 if (options.extraData.hasOwnProperty(p))
  22.                     formdata.append(p, options.extraData[p]);
  23.         }
  24.  
  25.         options.data = null;
  26.  
  27.         var s = $.extend(true, {}, $.ajaxSettings, options, {
  28.             contentType: false,
  29.             processData: false,
  30.             cache: false,
  31.             type: 'POST'
  32.         });
  33.        
  34.         if (options.uploadProgress) {
  35.             // workaround because jqXHR does not expose upload property
  36.             s.xhr = function() {
  37.                 var xhr = jQuery.ajaxSettings.xhr();
  38.                 if (xhr.upload) {
  39.                     xhr.upload.onprogress = function(event) {
  40.                         var percent = 0;
  41.                         var position = event.loaded || event.position; /*event.position is deprecated*/
  42.                         var total = event.total;
  43.                         if (event.lengthComputable) {
  44.                             percent = Math.ceil(position / total * 100);
  45.                         }
  46.                         options.uploadProgress(event, position, total, percent);
  47.                     };
  48.                 }
  49.                 return xhr;
  50.             };
  51.         }
  52.  
  53.         s.data = null;
  54.           var beforeSend = s.beforeSend;
  55.           s.beforeSend = function(xhr, o) {
  56.               o.data = formdata;
  57.             if(beforeSend)
  58.                 beforeSend.call(o, xhr, options);
  59.         };
  60.         $.ajax(s);
  61.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement