Title: Something isn&#039;t working right&#8230;
Last modified: August 21, 2016

---

# Something isn't working right…

 *  Resolved [m3ndi3](https://wordpress.org/support/users/m3ndi3/)
 * (@m3ndi3)
 * [12 years, 8 months ago](https://wordpress.org/support/topic/something-isnt-working-right/)
 * Hello, this is my original code that I am trying to work on wordpress:
 *     ```
       function ajaxUploadOwnFile(){
               $.ajaxFileUpload({
                   url:'ownfileupload.php',
       	        secureuri:false,
       	        fileElementId:'ownFileToUpload',
       	        dataType: 'json',
           		success: function (data){
           		    $('#ownFileToUpload').val('');
                       if (data.status != 'error'){
                           var file_name = data.file_name;                    
   
                           //saving our file name into cookie session
                           var user_files = $.cookie('user_files') != undefined ? $.cookie('user_files') : '';
   
                           if (user_files == '')
                               user_files = file_name;
                           else
                               user_files += ',' + file_name ;
   
                           $.cookie('user_files', user_files, { expires: 1 });            
   
                           set_items_drag();
                       } else {
                           alert(data.error);
                       }
                   },
       	        error: function (data, status, e){
       	           alert(e);
       	        }
               });
           }
       ```
   
 * This is the modified code with Blunt Ajax
 *     ```
       function ajaxUploadOwnFile(){
       		   var arguments = {
   
       			   debug:true,
                          url: "/test/wp-content/themes/toolbox/ownfileupload.php",
                          callback: $.ajaxFileUpload,
                          method:"POST",
                          element_id:'ownFileToUpload',
                          pass:function (data){
           		    $('#ownFileToUpload').val('');
                       if (data.status != 'error'){
                           var file_name = data.file_name;                    
   
                           //saving our file name into cookie session
                           var user_files = $.cookie('user_files') != undefined ? $.cookie('user_files') : '';
   
                           if (user_files == '')
                               user_files = file_name;
                           else
                               user_files += ',' + file_name ;
   
                           $.cookie('user_files', user_files, { expires: 1 });            
   
                           set_items_drag();
                       } else {
                           alert(data.error);
                       }
                   },
       	        error: function (data, status, e){
       	           alert(e);
       	        }
   
       				   };
         bluntAjax(arguments);
         }
       ```
   
 * Can you please tell me what I am doing wrong?
 * [http://wordpress.org/plugins/blunt-ajax/](http://wordpress.org/plugins/blunt-ajax/)

Viewing 3 replies - 1 through 3 (of 3 total)

 *  Plugin Author [John Huebner](https://wordpress.org/support/users/hube2/)
 * (@hube2)
 * [12 years, 7 months ago](https://wordpress.org/support/topic/something-isnt-working-right/#post-4413603)
 * I don’t usually use this ajax plugin in combination with JQuery, I’m assuming
   that this is because of the $. values. I created this so that I can avoid JQuery
   completely, I’m not a fan of frameworks.
 * At any rate I’m a little confused.
 * The callback function your passing to bluntAjax is:
 * callback: $.ajaxFileUpload
 * and I don’t see this function defined anywhere and it does not appear to be a
   function in any of the code you included.
 * at the same time your pass value is a function. Is that the function you want
   to be called when the data is returned from the server?
 * It this is the case then you may simply have the values of these arguments reversed.
 * if $.ajaxFileUpload is a function can you post that?
 *  Thread Starter [m3ndi3](https://wordpress.org/support/users/m3ndi3/)
 * (@m3ndi3)
 * [12 years, 7 months ago](https://wordpress.org/support/topic/something-isnt-working-right/#post-4413614)
 * Thank you for answering!
    What is supposed to happen in the function ajaxUploadOwnFile
   is that when a person clicks a button (id=”ownFileToUpload”) It will call the
   $.ajaxFileUpload which calls ownfileupload.php:
 *     ```
       <?php
           $uploaddir = '/wp-content/themes/toolbox/uploads/users/';
       	$fileElementName = 'ownFileToUpload';
       	if(!empty($_FILES[$fileElementName]['error']))
       	{
       		switch($_FILES[$fileElementName]['error'])
       		{
   
       			case '1':
       				$error = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
       				break;
       			case '2':
       				$error = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
       				break;
       			case '3':
       				$error = 'The uploaded file was only partially uploaded';
       				break;
       			case '4':
       				$error = 'No file was uploaded.';
       				break;
   
       			case '6':
       				$error = 'Missing a temporary folder';
       				break;
       			case '7':
       				$error = 'Failed to write file to disk';
       				break;
       			case '8':
       				$error = 'File upload stopped by extension';
       				break;
       			case '999':
       			default:
       				$error = 'No error code avaiable';
       		}
               echo json_encode(array('error' => $error));
               exit();
       	}elseif(empty($_FILES[$fileElementName]['tmp_name']) || $_FILES[$fileElementName]['tmp_name'] == 'none')
       	{
       	    echo json_encode(array('error' => 'No file was uploaded'));
               exit();
       	}else
       	{
       	    $path = $_FILES[$fileElementName]['name'];
               $ext = pathinfo($path, PATHINFO_EXTENSION);    
   
               $unique_name = uniqid() . '.' . $ext;
   
               $uploadfile = $uploaddir . $unique_name;        
   
               if (move_uploaded_file($_FILES[$fileElementName]['tmp_name'], $uploadfile)) {
                   $size = getimagesize($uploadfile);
                   //echo json_encode($_FILES[$fileElementName]['size']);
                   echo json_encode(array('file_name' => $uploadfile, 'size' => $size));
               } else {
                   echo json_encode(array('error' => true));
               }
   
       	}		
   
       ?>
       ```
   
 * and ajaxfileupload.js:
 *     ```
       jQuery.extend({
   
               createUploadIframe: function(id, uri)
              {
                    //create frame
                       var frameId = 'jUploadFrame' + id;
                       var iframeHtml = '';
                    jQuery(iframeHtml).appendTo(document.body);
   
                       return jQuery('#' + frameId).get(0);
               },
               createUploadForm: function(id, fileElementId, data)
              {
                 //create form
                 var formId = 'jUploadForm' + id;
                 var fileId = 'jUploadFile' + id;
                 var form = jQuery('');
                 if(data)
                 {
                    for(var i in data)
                    {
                       jQuery('').appendTo(form);
                    }
                 }
                 var oldElement = jQuery('#' + fileElementId);
                 var newElement = jQuery(oldElement).clone();
                 jQuery(oldElement).attr('id', fileId);
                 jQuery(oldElement).before(newElement);
                 jQuery(oldElement).appendTo(form);
   
                 //set attributes
                 jQuery(form).css('position', 'absolute');
                 jQuery(form).css('top', '-1200px');
                 jQuery(form).css('left', '-1200px');
                 jQuery(form).appendTo('body');
                 return form;
               },
   
               ajaxFileUpload: function(s) {
                   // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout
                   s = jQuery.extend({}, jQuery.ajaxSettings, s);
                   var id = new Date().getTime()
                 var form = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data));
                 var io = jQuery.createUploadIframe(id, s.secureuri);
                 var frameId = 'jUploadFrame' + id;
                 var formId = 'jUploadForm' + id;
                   // Watch for a new set of requests
                   if ( s.global && ! jQuery.active++ )
                 {
                    jQuery.event.trigger( "ajaxStart" );
                 }
                   var requestDone = false;
                   // Create the request object
                   var xml = {}
                   if ( s.global )
                       jQuery.event.trigger("ajaxSend", [xml, s]);
                   // Wait for a response to come back
                   var uploadCallback = function(isTimeout)
                 {
                    var io = document.getElementById(frameId);
                       try
                    {
                       if(io.contentWindow)
                       {
                           xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
                               xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
   
                       }else if(io.contentDocument)
                       {
                           xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
                              xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
                       }
                       }catch(e)
                    {
                       jQuery.my_handleError(s, xml, null, e);
                    }
                       if ( xml || isTimeout == "timeout")
                    {
                           requestDone = true;
                           var status;
                           try {
                               status = isTimeout != "timeout" ? "success" : "error";
                               // Make sure that the request was successful or notmodified
                               if ( status != "error" )
                          {
                                   // process the data (runs the xml through httpData regardless of callback)
                                   var data = jQuery.uploadHttpData( xml, s.dataType );
                                   // If a local callback was specified, fire it and pass it the data
                                   if ( s.success )
                                       s.success( data, status );
   
                                   // Fire the global callback
                                   if( s.global )
                                       jQuery.event.trigger( "ajaxSuccess", [xml, s] );
                               } else
                                   jQuery.my_handleError(s, xml, status);
                           } catch(e)
                       {
                               status = "error";
                               jQuery.my_handleError(s, xml, status, e);
                           }
   
                           // The request was completed
                           if( s.global )
                               jQuery.event.trigger( "ajaxComplete", [xml, s] );
   
                           // Handle the global AJAX counter
                           if ( s.global && ! --jQuery.active )
                               jQuery.event.trigger( "ajaxStop" );
   
                           // Process result
                           if ( s.complete )
                               s.complete(xml, status);
   
                           jQuery(io).unbind()
   
                           setTimeout(function()
                                      {   try
                                         {
                                            jQuery(io).remove();
                                            jQuery(form).remove();   
   
                                         } catch(e)
                                         {
                                            jQuery.my_handleError(s, xml, null, e);
                                         }                           
   
                                      }, 100)
   
                           xml = null
   
                       }
                   }
                   // Timeout checker
                   if ( s.timeout > 0 )
                 {
                       setTimeout(function(){
                           // Check to see if the request is still happening
                           if( !requestDone ) uploadCallback( "timeout" );
                       }, s.timeout);
                   }
                   try
                 {
   
                    var form = jQuery('#' + formId);
                    jQuery(form).attr('action', s.url);
                    jQuery(form).attr('method', 'POST');
                    jQuery(form).attr('target', frameId);
                       if(form.encoding)
                    {
                       jQuery(form).attr('encoding', 'multipart/form-data');
                       }
                       else
                    {
                       jQuery(form).attr('enctype', 'multipart/form-data');
                       }
                       jQuery(form).submit();
   
                   } catch(e)
                 {
                       jQuery.my_handleError(s, xml, null, e);
                   }
   
                 jQuery('#' + frameId).load(uploadCallback   );
                   return {abort: function () {}};   
   
               },
   
               uploadHttpData: function( r, type ) {
                   var data = !type;
                   data = type == "xml" || data ? r.responseXML : r.responseText;
                   // If the type is "script", eval it in global context
                   if ( type == "script" )
                       jQuery.globalEval( data );
                   // Get the JavaScript object, if JSON is used.
                   if ( type == "json" )
                       eval( "data = " + data );
                   // evaluate scripts within html
                   if ( type == "html" )
                       jQuery("").html(data).evalScripts();
                    //alert($('param', data).each(function(){alert($(this).attr('value'));}));
                   return data;
               },
   
               /* jQuery 1.2 function substitution: */
               my_handleError: function( s, xhr, status, e ) {
                 // If a local callback was specified, fire it
                 if ( s.error ) s.error( xhr, status, e );
   
                 // Fire the global callback
                           /* INCOMPATIBLE!!! Modern jQuery 1.5+ expects xhr to be an jqXHR object.
                 if ( s.global )
                    jQuery.event.trigger( "ajaxError", [xhr, s, e] );
                                   */
              }
           })
       ```
   
 * If there is a way I can do this together with your plugin, I would be eternally
   grateful if you would help me out!
 *  Plugin Author [John Huebner](https://wordpress.org/support/users/hube2/)
 * (@hube2)
 * [12 years, 7 months ago](https://wordpress.org/support/topic/something-isnt-working-right/#post-4413648)
 * Blunt Ajax is not set up to work with JQuery, or to use a JQuery function as 
   a callback function. If you look at [the documentation I’ve created there is a section on callback functions and their requirements](http://wordpress.org/plugins/blunt-ajax/other_notes/).
   The function that you’re setting as a callback function for Blunt AJAX does not
   use the parameters sent by my script. Please read the documentation.
 * Also, if you’re loading JQuery anyway and using it to do other things then you
   should just be using JQuery’s methods and functions for doing AJAX. The purpose
   of using this plugin is to eliminate the need to load JQuery (or another framework)
   to do AJAX, if your loading JQuery anyway then there’s really no reason to be
   using this plugin.

Viewing 3 replies - 1 through 3 (of 3 total)

The topic ‘Something isn't working right…’ is closed to new replies.

 * ![](https://s.w.org/plugins/geopattern-icon/blunt-ajax.svg)
 * [Blunt AJAX](https://wordpress.org/plugins/blunt-ajax/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/blunt-ajax/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/blunt-ajax/)
 * [Active Topics](https://wordpress.org/support/plugin/blunt-ajax/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/blunt-ajax/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/blunt-ajax/reviews/)

 * 3 replies
 * 2 participants
 * Last reply from: [John Huebner](https://wordpress.org/support/users/hube2/)
 * Last activity: [12 years, 7 months ago](https://wordpress.org/support/topic/something-isnt-working-right/#post-4413648)
 * Status: resolved