Поддержка WordPress Multisite Не работает AJAX.

  • Добрый день, пытаюсь уже три дня заставить работать AJAX.
    Что я сделал.
    Зарегистрировал события:

    add_action('wp_ajax_get_data_pin', array( $this, 'getDataPin'));
    		add_action('wp_ajax_nopriv_get_data_pin', array( $this, 'getDataPin'));

    Затем создал функцию response:

    public function getDataPin() {
    	$data['name'] = 'name';
    	$data['first'] = 'smit';
    
    	echo json_encode($data);
    }

    Затем в JS написал AJAX запрос:

    viewPinInfo: function(pinID) {
             $.ajax({
             url: pptt_ajax.ajaxurl,
             type: 'POST',
             typeData: 'JSON',
             success: function(data) {
                  alert(data.name);
                  }
             });
    }, // viewPinInfo

    Вообщем ошибок ни каких не появляется, но и ответа не приходит.
    выяснил что в фале ../admin-ajax.php дело дальше вот этой строки не идет:

    // Require an action parameter
    if ( empty( $_REQUEST['action'] ) )
    	die( '0' );

    Получается что о существовании обработчика AJAX WP и не знает.
    Как быть, что делать что бы заработало?

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Добавьте в запрос параметр action, равный get_data_pin.

    Сделал так:

    viewPinInfo: function(pinID) {
    	$.ajax({
    		url: pptt_ajax.ajaxurl,
    		type: 'POST',
    		typeData: 'JSON',
    		action : 'get_data_pin',
    		success: function(data) {
    			//alert(data.name);
    		}
    	});
    }, // viewPinInfo

    И так на всякий случай:

    viewPinInfo: function(pinID) {
    	$.ajax({
    		url: pptt_ajax.ajaxurl + 'get_data_pin',
    		type: 'POST',
    		typeData: 'JSON',
    		success: function(data) {
    			//alert(data.name);
    		}
    	});
    }, // viewPinInfo

    Ничего не изменилось, ошибок нет, та же история(

    Спасибо, заработало.
    Вообщем чего сделал.

    public function getDataPin() {
    	$data['name'] = 'name';
    	$data['first'] = 'smit';
    
    	exit (json_encode($data));
    }

    Использование exit важно, ибо иначе в респонс дописывается 0 и не работает. Хотя буржуи рекомендуют использовать echo, не надо так делать.
    И еще добавил параметр action именем хука на который цеплял респонс.

    viewPinInfo: function(pinID) {
    	 $.ajax({
    		 type: "POST",
    		 typeData: "JSON",
    		 url: pptt_ajax.ajaxurl,
    		 data: ({
    			 pinID: pinID,
    			 action: 'get_data_pin'
    		 }),
    		 success: function(data) {
    
    			 var data = JSON.parse(data);
    
    			 $('#f_pinpointtooltip_wrapper').append(data.name);
    		 }
    	 });
     }, // viewPinInfo

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Не работает AJAX.» закрыта для новых ответов.