Wordpress 管理员 - 功能未定义?

问题描述 投票:0回答:3

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

元框中包含的 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) 未定义'

我希望我已经解释清楚了 - 如果没有,请给我留言:)

php jquery ajax wordpress wordpress-theming
3个回答
0
投票

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

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

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

擦去额头上的汗


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>

0
投票

评论这篇古老的帖子是因为我也遇到了同样的问题,而且我花了很长时间才弄清楚。

我正在制作一个自定义 WordPress 主题,并在 VS Code 中打开主题目录。但是,除非您打开整个项目目录(包含

log
conf
app
文件夹)

,否则 WordPress 功能将无法工作。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.