AJAX fileupload – TypeError: not a function ajaxSubmit()
-
I have a plugin that works as a standard POST but not as an AJAX request. Really looking for any ideas of what I missed… Thank you.
I am getting a not a function error in Firebug with this function:
TypeError: jQuery(…).ajaxSubmit is not a function
jQuery(this).ajaxSubmit(options);This is the js file that it being enqueued with my plugin – it does load in the header:
//Removed file checks that are HTML5 spec jQuery(document).ready(function(){ jQuery('#nannie_app_upload').submit(function() { var options = { action: 'nannie_app_upload', type: "POST", target: '#output', // target element(s) to be updated with server response beforeSubmit: beforeSubmit, // pre-submit callback success: afterSuccess, // post-submit callback uploadProgress: OnProgress, //upload progress callback resetForm: true // reset the form after successful submit }; alert('jQuery submit called'); jQuery(this).ajaxSubmit(options); // always return false to prevent standard browser submit and page navigation alert('Got this from the server: ' + response); return false; }); //function after succesful file upload (when server response) function afterSuccess(){ alert('jQuery afterSuccess'); jQuery('#submit-btn').show(); //show submit button jQuery('#loading-img').hide(); //hide loading button jQuery('#progressbox').delay( 1000 ).fadeOut(); //hide progress bar } //function to check file size before uploading. function beforeSubmit(){ alert('jQuery beforeSubmit'); jQuery('#submit-btn').hide(); //hide submit button jQuery('#loading-img').show(); //show loading button jQuery("#output").html(""); } //progress bar function function OnProgress(event, position, total, percentComplete) { //Progress bar alert('jQuery OnProgress'); jQuery('#progressbox').show(); jQuery('#statustxt').show(); jQuery('#progressbar').width(percentComplete + '%') //update progressbar percent complete jQuery('#statustxt').html(percentComplete + '%'); //update status text if(percentComplete>50) { jQuery('#statustxt').css('color','#000'); //change status text to white after 50% } } });Here is the Form that is generated from a child theme:
//Nannie upload form add_action("action_nannie_upload_form", "do_action_nannie_upload_form"); function do_action_nannie_upload_form() { $url = plugins_url(); $plugins_url = $url . "/nannie-app/"; ?><br> An Upload FORM!<br> <form action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" enctype="multipart/form-data" id="nannie_app_upload"> <br> <?php wp_nonce_field('nannie_app_upload','nannie_upload_ajax_nonce'); ?> <!-- Add new File --> <span class="btn btn-file">Select file: <input name="FileInput" id="FileInput" type="file" /></span> <button type="submit" class="btn" id="submit-btn">Upload</button> </form> <img src="<?php echo $plugins_url; ?>images/ajax-loader.gif" id="loading-img" style="display:none;" alt="Please Wait"/> <div id="progressbox" style="display:none;"><div id="progressbar"></div > <div id="statustxt">0%</div></div> <div id="output"></div> <br> <br> <hr/> <?php }And here is the action that is called by the form submit. If I remove the check for AJAX headers it uploads the file and redirects me to a blank page.
add_action("wp_ajax_nopriv_nannie_app_upload", "nannie_app_upload"); function nannie_app_upload(){ global $wpdb; if(isset($_FILES["FileInput"])){ log_me("nannie_app_upload: FileInput found"); if (!isset( $_POST['nannie_upload_ajax_nonce']) || !wp_verify_nonce($_POST['nannie_upload_ajax_nonce'], 'nannie_app_upload')){ print 'Sorry, your nonce did not verify.'; log_me("nannie_app_upload: nonce did not verify"); exit; } if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){ if(isset($_SESSION["naap_app_uid"])){ $app_uid = $_SESSION["naap_app_uid"]; } log_me('nannie_app_upload: AJAX Not Called #' . $app_uid); die(); } //Is file size is less than allowed size. if ($_FILES["FileInput"]["size"] > 5242880) { log_me('nannie_app_upload: File size is too big! #' . $app_uid); die("File size is too big!"); } $_SESSION["naap_app_uid"] = $app_uid; $UploadDirectory = WP_PLUGIN_DIR."/nannie-app/tmp/" . $app_uid . "/"; //////////////////////////////////////////////////// //http://www.saaraan.com/2012/06/ajax-file-upload-with-php-and-jquery if (!@file_exists($UploadDirectory)) { //destination folder does not exist if(!is_dir($UploadDirectory)) { mkdir($UploadDirectory); if (!@file_exists($UploadDirectory)) { log_me('nannie_app_upload: Upload directory missing for AJAX upload #' . $app_uid); die("Make sure Upload directory exist!"); } } } //allowed file type Server side check switch(strtolower($_FILES['FileInput']['type'])) { //allowed file types case 'image/png': //png file case 'image/gif': //gif file case 'image/jpeg': //jpeg file case 'application/pdf': //PDF file case 'application/msword': //ms word file case 'application/vnd.ms-excel': //ms excel file case 'application/x-zip-compressed': //zip file case 'text/plain': //txt file case 'text/html': //html file //File Title will be used as new File name $FileName = strtolower($_FILES['FileInput']['name']); //uploaded file name $ImageExt = substr($FileName, strrpos($FileName, '.')); //file extension $NewFileName = substr($FileName, 0, strrpos($FileName, '.') ); //file name before random $FileType = $_FILES['FileInput']['type']; //file type $FileSize = $_FILES['FileInput']["size"]; //file size $RandNumber = rand(0, 9999999999); //Random number to make each filename unique. $uploaded_date = date("Y-m-d H:i:s"); $NewFileName = preg_replace(array('/\s/', '/\.[\.]+/', '/[^\w_\.\-]/'), array('_', '.', ''), strtolower($NewFileName)); $NewFileName = $NewFileName.'_'.$RandNumber.$ImageExt; //Rename and save uploded file to destination folder. if(move_uploaded_file($_FILES['FileInput']["tmp_name"], $UploadDirectory . $NewFileName )){ //future SQL Insert to record the files uploaded - new table napp_applications_files log_me('nannie_app_upload: Success Upload #' . $app_uid); die('Success! File Uploaded.'); break; }else{ log_me('nannie_app_upload: Failed Upload #' . $app_uid); die('error uploading File!'); break; } break; default: log_me('nannie_app_upload: Unsupported Upload #' . $app_uid); die('Unsupported File!'); //output error enforcing file types break; } }else{ log_me('nannie_app_upload: Something wrong with upload! Is "upload_max_filesize" set correctly? #' . $app_uid); die('Something wrong with upload! Is "upload_max_filesize" set correctly?'); } }
The topic ‘AJAX fileupload – TypeError: not a function ajaxSubmit()’ is closed to new replies.