• Resolved m3ndi3

    (@m3ndi3)


    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?

    https://www.ads-software.com/plugins/blunt-ajax/

Viewing 3 replies - 1 through 3 (of 3 total)
  • Plugin Author John Huebner

    (@hube2)

    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

    (@m3ndi3)

    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

    (@hube2)

    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. 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.