Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2018, 15:16
Аватар для Gagablik
Новичок на форуме
Отправить личное сообщение для Gagablik Посмотреть профиль Найти все сообщения от Gagablik
 
Регистрация: 17.04.2018
Сообщений: 2

AJAX в wordpress плагине в switch
Сразу код, который не работает, в конце вопрос =):

Главный файл плагина wordpress:

define('UrlPlugin', plugin_dir_path(__FILE__));	// Путь до плагина
    
    switch ($_SERVER['REQUEST_URI']) { // Навигация по сайту
    	case '/vyistavit-redaktirovat-golosa':
    		include UrlPlugin.'addEditVote/AddEditVote.php';
    		break;
    }

Файл AddEditVote.php:

add_action( 'wp_ajax_hello', 'say_hello' );
    function say_hello() {
    	echo "УРАААААААААААА!";
    	wp_die();
    }
    
    //// при хуке действии wp_enqueue_scripts, вызываем функцияю, которая зарегистрирует JS код обработчика AJAX и выставил её после jQuery
    add_action('wp_enqueue_scripts', function () {
    	wp_enqueue_script('ajaxAddEditVote', plugins_url('/ajaxAddEditVote.js', __FILE__), array('jquery'), null);
    	// До вывода JS, вызванного wp_enqueue_script, выводим JS объект с какими либо значениями
    	wp_localize_script('ajaxAddEditVote', 'localizePlugin', array(
    		'ajaxURL' => admin_url('admin-ajax.php')
    	));
    });

JS с AJAX запросом, добавленный в предыдущем файле:

var data = {
    	action: 'hello',
    };
    jQuery.post(localizePlugin.ajaxURL, data, function (response) {
    	alert('Получено с сервера: ' + response);
    });

Нужно:

- Что бы на определённой странице сайта срабатывал AJAX и все файлы,
связанные с ним хранились в отдельной папке плагина.
- В коде выше, все пути прописаны правильно (перепроверил много раз),
экшн для не авторизованных не требуется.
- Если из

switch

вытащить

include UrlPlugin.'addEditVote/AddEditVote.php';

И просто разместить в главном файле плагина, то всё работает, но на всех страницах сайта. Как только загоняешь в switch или if, то перестаёт работать и появляется 400 ошибка AJAX
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2018, 18:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Gagablik
В коде выше, все пути прописаны правильно (перепроверил много раз)
А статус 400 при этом ради шутки появляется? )
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2018, 22:55
Аватар для Gagablik
Новичок на форуме
Отправить личное сообщение для Gagablik Посмотреть профиль Найти все сообщения от Gagablik
 
Регистрация: 17.04.2018
Сообщений: 2

Сообщение от laimas Посмотреть сообщение
А статус 400 при этом ради шутки появляется? )
Другого объяснения не вижу.

Если именно в этом коде:
define('UrlPlugin', plugin_dir_path(__FILE__));	// Путь до плагина
    
switch ($_SERVER['REQUEST_URI']) { // Навигация по сайту
    case '/vyistavit-redaktirovat-golosa':
    	include UrlPlugin.'addEditVote/AddEditVote.php';
    	break;
}

До иклюда вызвать echo чего либо, то это что-либо отображается на сайте. так же, если инклюд вытащить из switch, то всё работает. Поэтому не понимаю что не так
Ответить с цитированием
  #4 (permalink)  
Старый 18.04.2018, 02:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Потому, что путь ошибочный, код ошибки об этом сообщает. До иклюда вызвать echo чего либо, можно не чего либо, а пути, тогда и ошибка найдется.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax разсинхронизация. Sochirom AJAX и COMET 11 27.02.2018 07:10
Отправка формы после ajax проверки ShutTap Общие вопросы Javascript 15 08.04.2016 11:46
AJAX скрипт для Wordpress wtf user AJAX и COMET 0 26.05.2014 01:52
jQuery Ajax JS, Wordpress GURU Требуется!!! Dima2500 Работа 1 13.09.2013 12:09
не работает ajax в wordpress litehause Общие вопросы Javascript 2 10.09.2011 11:18