2016-11-08 2 views
1

У меня есть простая форма, которую я создаю для своего сайта Wordpress, и я не могу понять, что я делаю неправильно. Я использую ajax для вызова отдельного php-скрипта из общего скрипта function.php (я назвал его wpplugin.php) для обработки всех моих данных формы, но я не могу понять, является ли мой javascript-файл или URL-адрес для ajax запуск.Wordpress ajax и дополнительные скрипты php

У меня есть 3 файла, у меня есть /wpplugin.php и /upload.php с /code/upload.js.

Чтобы добавить файл JS Я использую этот код в wpplugin.php:

add_action('wp_enqueue_scripts', 'all_enqueue_scripts'); 
function all_enqueue_scripts() 
{ 
    wp_enqueue_script('uploadjs', plugins_url('/code/upload.js', __FILE__), array('jquery'), '1.0', true); 
} 

и мой Аякс из сценария JS выглядит следующим образом:

$("#uploadform").on('submit',(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: "upload.php", 
     type: "POST",  
     data: new FormData(this), 
     contentType: false,  
     cache: false,   
     processData:false,  
     success: function(data) 
     { 
      arr = data; 
     } 
    }); 
})); 

я включить сценарий JS в п HTML блок с в wpplugin.php так:

<script src="code/upload.js"> 

Подачу назад от WordPress настолько ограничено, я не могу сказать, если это моя ajax не запускается или js не используется. Я тестировал весь код как в xxamp, так и в общем жестком кодированном html-сайте, он работает.

Любые советы приветствуются.

+0

Я был неправ, у меня есть несколько. Прежде всего, это говорит о том, что мой аякс 3.1.0 слишком новый. – Kbcoder

+0

Также говорит Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден) для upload.php. Гонг, чтобы найти более старую сборку ajax и посмотреть, поможет ли это в первую очередь. – Kbcoder

+0

Исправлена ​​проблема с выпуском jquery для Atfer. Он все еще не может найти мой upload.php, говорящий, что он не загружается после попытки публикации, а мои js-скрипты не удается получить. – Kbcoder

ответ

1

Ошибка загрузки сценария связана с тем, что вы используете plugins_url() в своем файле functions.php.

Из документации на plugins_url():

Возвращает абсолютный URL в плагинах или мю-плагин каталога (без слэша) или, при использовании $ пути аргумента для конкретного файла под этот каталог.

Источник: https://codex.wordpress.org/Function_Reference/plugins_url

Предположим, что ваш каталог темы выглядит следующим образом:

|- style.css 
|- index.php 
|- functions.php 
|- code 
    |- upload.js 

То, что вы хотите сделать, это отредактировать файл functions.php и заменить:

wp_enqueue_script('uploadjs', plugins_url('/code/upload.js', __FILE__), array('jquery'), '1.0', true); 

с

wp_enqueue_script('uploadjs', get_template_directory() . '/code/upload.js', array('jquery'), '1.0', true); 

EDIT: О upload.php

WordPress уже имеет встроенную систему для одного АЯКСА конечной точки для каждой темы и плагина для использования.

Адрес конечной точки - это возвращаемое значение от admin_url('admin-ajax.php'), что на практике обычно составляет mydomain.com/wp-admin/admin-ajax.php.

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

Существует специальная собственность, которую вы отправляете по телефону action. Это то, что позволяет WordPress знать, кто бьет admin-ajax.php.

Вся информация о нем находится здесь: https://codex.wordpress.org/AJAX_in_Plugins

Быстрый пример того, что это будет выглядеть так:

JS

$("#uploadform").on('submit',(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: "wp-admin/admin-ajax.php?action=akamaozu_do_frontend_upload", 
     type: "POST",  
     data: new FormData(this) 
    }); 
})); 

functions.php

add_action('wp_ajax_akamaozu_do_frontend_upload', 'handle_signed_in_uploads'); 
add_action('wp_ajax_nopriv_akamaozu_do_frontend_upload', 'handle_signed_out_uploads'); 
+1

Как насчет «upload.php» в моей функции ajax? Или это теперь правильно вытащить javascript, совпадающий с исходным вызовом по каталогу, в любом случае так же, как и для моего вызова ajax? – Kbcoder

+0

Спасибо, что вам помогли кучу. Большое спасибо. – Kbcoder

+0

Привет, я получаю это сейчас /wp-content/themes/dance/code/upload.js?ver = 1.0 404 (не найдено) Похоже, что вы тянете ссылку с темы, а не плагины, что имеет смысл, так как это шаблон. Также

Смежные вопросы