Wordpress Admin - 功能未定义?

时间:2011-11-02 14:11:10

标签: php jquery ajax wordpress wordpress-theming

我在尝试从编辑Wordpress页面时使用的排队javascript文件调用Javascript函数时遇到问题。我创建了一个简单的元框,其中包含一些AJAX超链接,我希望能够从Javascript文件中调用函数(非常简单的东西,但我不断收到错误“blah(1)未定义”。

METABOX中包含的HTML:

<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 :(得分:0)

好的基本上 - 我无法让它发挥作用。我的javascript绝对没问题,所以为了调用我自己的函数,我在页面本身中声明它们而不是调用JS文件。这似乎有效,我的代码立即执行,没有任何错误。

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

解决方法,但至少解决了我的问题。

从前额擦汗

答案 1 :(得分:0)

我遇到同样的问题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>