Carregamento de arquivos do WordPress AJAX – FrontEnd

Então eu tenho lido todo o tutorial de upload do arquivo AJAX do WordPress para WordPress. Eu posso bem. Nada está funcionando para mim no momento. Aquele que faz mais sentido para mim é esse: http://theaveragedev.com/wordpress-files-ajax/

Aqui está o meu código:

No meu arquivo de modelo example.php

var ajax_url = "" 

Isso está em ajax-file-upload.js

 jQuery(document).ready(function(){ var form_data = {}; $(this).find('input').each(function(){ form_data[this.name] = $(this).val(); }); $('#file_form').ajaxForm({ url: ajax_url, // there on the admin side, do-it-yourself on the front-end data: form_data, type: 'POST', contentType: 'json', success: function(response){ alert(response.message); } }); }); 

Isso está em minhas funções.php

 function q_scripts(){ $src = get_template_directory_uri().'/js/ajax-file-upload.js'; wp_enqueue_script('my_ajax_file_uploader_thing', $src, array('jquery', 'jquery-form')); } add_action('init', 'q_scripts'); function handle_file_upload(){ check_ajax_referer('ajax_file_nonce', 'security'); if(!(is_array($_POST) && is_array($_FILES) && defined('DOING_AJAX') && DOING_AJAX)){ return; } if(!function_exists('wp_handle_upload')){ require_once(ABSPATH . 'wp-admin/includes/file.php'); } $upload_overrides = array('test_form' => false); $response = array(); foreach($_FILES as $file){ $file_info = wp_handle_upload($file, $upload_overrides); // do something with the file info... $response['message'] = 'Done!'; } echo json_encode($response); die(); } add_action('wp_ajax_my_file_upload', 'handle_file_upload'); 

Eu tentei adicionar o enctype ao elemento do formulário e isso não funcionou. O erro que eu continuo recebendo é um alerta dizendo ‘indefinido’. Alguém sabe como corrigir este problema?

EDITAR

O problema “indefinido” já desapareceu quando editei o arquivo js para ter um evento de clique e alterei o seletor para o loop de input do formulário:

 jQuery(document).ready(function($){ $('#file_form :submit').click(function() { var form_data = {}; $('#file_form').find('input').each(function () { form_data[this.name] = $(this).val(); }); console.log(form_data); $('#file_form').ajaxForm({ url: ajax_url, // there on the admin side, do-it-yourself on the front-end data: form_data, type: 'POST', contentType: 'json', success: function (response) { alert(response.message); }, error: function (response) { console.log('error'); } }); return false; }); }); 

Os arquivos ainda não estão sendo carregados na pasta de mídia. Eu também quero obter o URL carregado de volta uma vez que ele foi carregado.

Estou escrevendo para o console o object do arquivo para que eu possa ver o que está acontecendo. Aqui está um exemplo disso:

 Object {security: "e6db2a6eee", _wp_http_referer: "/chat?sessionappid=138", action: "my_file_upload", file_upload: "C:\fakepath\download.jpg", "": "Go"} 

Há algo de errado nisso e é por isso que não está sendo carregado?

Solutions Collecting From Web of "Carregamento de arquivos do WordPress AJAX – FrontEnd"

Oi Você usou este COde Para o tutorial de upload do arquivo AJAX do WordPress WordPress Aqui está o meu código:

No meu arquivo de modelo example.php

 

Isso está em ajax-file-upload.js

  jQuery(document).on('click', '.save-support', function (e) { var supporttitle = jQuery('.support-title').val(); var querytype = jQuery('.support-query').val(); var file_data = jQuery('#sortpicture').prop('files')[0]; var form_data = new FormData(); if (supporttitle == '') { jQuery('.support-title').css({"border": "1px solid red"}) return false; } else { jQuery('.support-title').css({"border": "1px solid #e3ecf0"}) } form_data.append('file', file_data); form_data.append('action', 'md_support_save'); form_data.append('supporttitle', supporttitle); jQuery.ajax({ url: '< ?php echo admin_url('admin-ajax.php'); ?>', type: 'post', contentType: false, processData: false, data: form_data, success: function (response) { jQuery('.Success-div').html("Form Submit Successfully") } error: function (response) { console.log('error'); } }); }); }); 

Este código iS functions.php

  add_action( 'wp_ajax_md_support_save','md_support_save' ); add_action( 'wp_ajax_nopriv_md_support_save','md_support_save' ); public function md_support_save(){ $support_title = !empty($_POST['supporttitle']) ? $_POST['supporttitle'] : 'Support Title'; if (!function_exists('wp_handle_upload')) { require_once(ABSPATH . 'wp-admin/includes/file.php'); } // echo $_FILES["upload"]["name"]; $uploadedfile = $_FILES['file']; $upload_overrides = array('test_form' => false); $movefile = wp_handle_upload($uploadedfile, $upload_overrides); // echo $movefile['url']; if ($movefile && !isset($movefile['error'])) { echo "File Upload Successfully"; } else { /** * Error generated by _wp_handle_upload() * @see _wp_handle_upload() in wp-admin/includes/file.php */ echo $movefile['error']; } die(); } 

todos os códigos para function.php


 if (!empty($_POST) || (!empty($_FILES))) { require_once (ABSPATH . '/wp-admin/includes/file.php'); require_once (ABSPATH . '/wp-admin/includes/image.php'); global $wpdb; if (isset($_POST['submit'])) { // Upload Exhibitor Logo $file = $_FILES['uploaded_doc']; if (!empty($file)) { $uploads = wp_upload_dir(); // Create 'user_avatar' directory if not exist $folderPath = ABSPATH . 'wp-content/uploads/Reports'; if (!file_exists($folderPath)) { mkdir($folderPath, 0777, true); } $ext = end((explode(".", $_FILES['uploaded_doc']['name']))); if( $ext== 'pdf' || $ext== 'docx' ){ $ABSPATH_userAvatarFullImage = ABSPATH . 'wp-content/uploads/Reports/' . time() . '.' . $ext; if (move_uploaded_file($_FILES['uploaded_doc']['tmp_name'], $ABSPATH_userAvatarFullImage)) { $data = array( 'title' => $_POST['title'], 'arabic_title' => $_POST['arabic_title'], 'principle_investigators' => $_POST['principle_investigators'], 'co_investgators' => $_POST['co_investgators'], 'coverage_area' => $_POST['coverage_area'], 'publication_year' => $_POST['publication_year'], 'types' => $_POST['types'], 'uploaded_doc' => $_FILES['uploaded_doc']['name'], 'create_date'=> date('Ymd H:i:s') ); $table = $wpdb->prefix . "reports_publication"; $result = $wpdb->insert($table, $data); } echo "1"; }else{ echo "File not in format"; } } } } 

}

sua forma

ENTRE SUA INFORMAÇÃO ….

  
< ?php $users = get_users(array( 'role' => 'governorate' )); foreach ($users as $user) { echo ''; } ?>
< ?php for ($i = 1965; $i <= 2050; $i++) { echo '
UPLOAD FILE
< ?php } }

jQuery (document) .ready (function () {// alert (‘hi’); // alert (mytheme.ajax_url);

 jQuery('#abc').validate({ rules: { title: "required", arabic_title: "required", principle_investigators: "required", co_investgators: "required", coverage_area: "required" }, messages: { title: "enter title", arabic_title: "arabic title required", principle_investigators: "principle investigators required required", co_investgators: "co investgators required", coverage_area: "coverage area required" }, submitHandler: function(form) { var formData = new FormData(jQuery('#abc')[0]); jQuery.ajax({ url: mytheme.ajax_url, type: 'POST', data: formData, async: false, cache: false, contentType: false, enctype: 'multipart/form-data', processData: false, success: function(data) { alert(data); if (data == '1') { alert("successfully submited"); } } }); return false; } }); 

});