Intereting Posts
Nginx – Правило только для загрузки в WordPress Плагин OAuth вызывает ошибку с Yahoo Заказ результатов WP_User_Query на идентификаторы пользователей, используемые в параметре include Пользовательская ошибка разбивки по страницам Как можно подключить плагин к концу каждого выдержки? как использовать tax_query для применения обоих терминов или один, если один пуст Может ли несколько пользовательских типов сообщений использовать обычную таксономию? Удалить меню таксономии без удаления метаболизма? Попытка отправить данные AJAX в WordPress Почему URL-адрес настраиваемого типа сообщений «/? Cposts = name-of-the-post», но URL-адрес почтового индекса по умолчанию «/? P = ID»? Использовать URL-адрес изображения с помощью add_image_size Не удается войти в WordPress Admin с балансировщиком нагрузки с завершением SSL Пользовательский тип сообщения не отображается правильно Сайт не загружается после попыток подключения к SSL Динамическое управление в настройке

Нет свойств объекта, отправляющих форму через AJAX

Я использую модальное окно с формой +, чтобы изменить аватар профиля. Как и следующие (functions.php):

add_action('change_avatar', 'edit_avatar_function'); function edit_avatar_function($uid, $pid) { $av = get_user_meta($uid, 'avatar_' . 'project', true); $avatar = wp_get_attachment_image_src( $av, 'thumb300' ); ?> <div id="avatar-modal" class="modal fade" role="dialog"> <div class="modal-dialog browse-panel"> <div class="box_title"> <?php _e('Edit your Avatar', 'KleeiaDev') ?> </div> <div class="box_content top-15 text-center" id="my-media"> <form id="change-avatar" action="#" method="post" enctype="multipart/form-data"> <p class="top-20"> <input id="input-avatar" data-buttonText="<?php _e('Upload an image (300x300px)','KleeiaDev'); ?>" type="file" name="avatar" style="display:inline-block!important" class="filestyle avatar" data-icon="false" data-input="false"/> <input id="pid" type="hidden" name="pid" value="<?php echo $pid ?>"/> <input id="uid" type="hidden" name="uid" value="<?php echo $uid ?>"/> </p> </form> <p class="top-20"> <button id="upload-avatar" type="button" class="submit_light full_width"><?php _e('Update Cover image','KleeiaDev') ?></button> </p> </div> </div> </div> 

Я называю этот модальный с <?php do_action('change_avatar', $myuid ); ?> <?php do_action('change_avatar', $myuid ); ?> на моей странице, и я отправляю информацию через AJAX, enqueuing действие вроде этого (functions.php)

 add_action('wp_ajax_update_avatar_function', 'update_avatar_function', 10, 2 ); function update_avatar_function(){ $pid = $_POST['pid']; $uid = $_POST['uid']; $avatar = $_POST['avatar']; //perform update user meta and other stuff //send me back uid and pid to check if they're correct $response = array('uid'=>$uid,'pid'=>$pid); echo json_encode($response); die(); } add_action( 'wp_enqueue_scripts', 'add_frontend_ajax_javascript_file', 10, 2 ); function add_frontend_ajax_javascript_file() { wp_localize_script( 'ajax-script', 'ajaxobject', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); } 

В последнее время я использую этот jQuery / AJAX:

 var updatebuttonav = $('#upload-avatar'); updatebuttonav.on('click', function() { event.preventDefault(); update_avatar(); }); function update_avatar() { var form_data = new FormData($('form#change-avatar')[0]); form_data.append('pid', $('#pid').val()), //no sending value form_data.append('uid', $('#uid').val()), //no sending value form_data.append('avatar', $('#input-avatar')[0].files[0]), //no sending file form_data.append('action', 'update_avatar_function'), console.log(form_data); //here is printing No Properties jQuery.ajax({ method: 'post', url : ajaxurl, dataType: 'json', data: form_data, processData: false, beforeSend:function(data){ //other functions }, success:function(data) { alert(data.uid + data.pid); }, error: function(data){ console.log(data); } }); //alert("a"); } 

Ну, с этим я вижу в своем console.log что свойства и значения объектов нет . Кроме того, ответ json – Нан . Я использую этот метод с другим разделом моего сайта, и я не понимаю, почему здесь он не работает. Возможно ли, что через do_action форма не видна? Я что-то упускаю? Любое предложение было бы более чем оценено!

Примечание. Я не использую wp_ajax_nopriv потому что пользователи, которые мне нужны, когда я зарегистрирован, конечно.

Solutions Collecting From Web of "Нет свойств объекта, отправляющих форму через AJAX"

Вы можете попробовать использовать new FormData() вместо new FormData($('form#change-avatar')[0]) . Кроме того, после processData:false вы должны добавить contentType: false поскольку jQuery будет устанавливать его неверно иначе , а для url вместо ajaxurl вы должны использовать ajaxobject.ajaxurl , так как с помощью wp_localize_script вторым параметром является имя объекта javascript

Во-первых, я бы удостоверился, что функция update_avatar() может читать данные формы. Может быть, функция должна принимать объект? Как форма или даже событие …

Во-вторых, я думаю, вам нужно указать в ваших данных «действие». Это имя функции ajax, которая обрабатывает отправляемые данные. Другими словами, цель вызова ajax. В вашем случае это будет:

action: 'update_avatar_function'

Дополнительную информацию см. В Codex .

(Вы можете жестко закодировать данные примера, чтобы убедиться, что ajax работает правильно, а затем поработать с отправкой данных формы.)