Wordpress Admin - функция не определена? - PullRequest
1 голос
/ 02 ноября 2011

У меня возникают проблемы при попытке вызвать функцию Javascript из файла javascript в очереди, используемого при редактировании страниц Wordpress. Я создал простой мета-блок с некоторыми гиперссылками AJAX, которые я хочу иметь возможность вызывать функции из файла Javascript (довольно просто, но я получаю сообщение об ошибке «blah (1) не определен».

HTML, СОДЕРЖАЩИЙСЯ В METABOX:

<a href="#" class="delete_pimg" id="pimg_1" onclick="blah(1);return false;">Delete Item</a>

JS:

function blah(theid){

if ( confirm("Are you sure you wish to remove this image (Note: Images are not removed from the Media Library)?") ) {

    var data = {
    action: 'myajax-delete',
    imgid: theid
    };

    jQuery.post(ajaxurl, data, function(response) {

        //Parse the JSON Object
        var object = jQuery.parseJSON(response);

        if ( response.status == 'true' )
        {
            jQuery('#file_' + theid + '_row').remove(); //remove TR
            alert('Image removed from this portfolio');
        }else{
            alert('Sorry, that image could not removed right now, please reload the page and try again.');  
        }

    });

Примечание: PHP-код на стороне сервера работает нормально и отвечает абсолютно так, как и ожидалось, на мои ручные сообщения. Файл javascript определенно присутствует и загружается браузером, как и ожидалось.

Если я использую следующую строку кода ниже, AJAX работает (поэтому я знаю, что JS в порядке), но мне нужно иметь возможность вызывать функцию по имени, а не использовать селектор. Я очень хочу понять, почему я не могу вызвать простую функцию !!!!

jQuery('.delete_pimg').click(function() { ^Above code^ } 

Просто чтобы еще раз исправить ошибку, которую я получаю при нажатии на ссылку: 'blah (1) не определен'

Надеюсь, я объяснил это ясно - если нет, пожалуйста, крикните:)

Ответы [ 2 ]

0 голосов
/ 29 июня 2016

У меня была та же проблема, где blah() is not defined, и я обнаружил, что мне нужно, чтобы файл js, поставленный в очередь, просто определял функцию, а не был обернут jQuery(document).ready(function($) { function blah(param){[...]} }).

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

Внутри functions.php

(короткий фрагмент в моем файле)

function blah_init() {
  # Want this on all pages
  # Queue JS and CSS
  wp_enqueue_script(
    'blah-file', // handle  
    get_template_directory_uri() . '/assets/js/blah-file.js', // source
    array('jquery'), // registered script handles this script depends on
    '1.0', // version
    true // true = in footer, false (or blank) = in <head>
  );
} 
add_action('wp_enqueue_scripts', 'blah_init');

Внутри blah-file.js

(это полное содержимое файла)

//jQuery(document).ready(function($) {
    function blah(param) {
      console.log('Blah triggered: ', param);
    } 
//})

Внутри header.php и footer.php

(короткий фрагмент, где я вывожу какую-то ссылку, например, социальную ссылку)

<!-- Ignore the href, this has nothing to do with getting this to work -->
<a href="javascript:;" onclick="blah("facebook")">Facebook</a>
0 голосов
/ 11 ноября 2011

Хорошо. В основном - я не мог заставить это работать. Мой javascript абсолютно в порядке, поэтому для вызова своих собственных функций я объявил их на самой странице, а не в файле JS. Кажется, это работает, и мой код сразу выполнен без ошибок.

* 1003 т.е. *

<script type="text/javascript">function blah(id){alert("This Works Nicely!");}</script>

Обход, но по крайней мере решил мою проблему в любом случае.

Вытирает пот со лба

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...