使用wp_localize_script将参数传递给javascript

时间:2014-08-08 18:23:52

标签: javascript jquery wordpress

我已经阅读了六个如何将参数传递给javascript的示例,他们都以非常类似的方式描述了这个过程,但是没有说出一个事件:javascript代码实际上是如何被调用的?我已经看到了几个代码在$ document.ready中进行测试的例子,但无法让它们工作。

这是我的php代码:

$base_id = 'id_'.wp_create_nonce("postlister");
$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$parms = array(
    'url'       => $url,
    'action'    => $action,
    'base_id'   => base_id );
wp_localize_script(self::slug.'-postlister', 'postlister_parms', $parms);

我的jQuery代码:

jQuery(document).ready(function (postlister_parms) {
    if (postlister_parms !== undefined) {
        var parms = postlister_parms;
        $.diagnostic('postlister loaded');
    }
});

当页面加载时,如果我的代码写了一些额外的html,则会生成一个div:

    echo '<div id="'.$base_id.'"></div>';

产生

<div id="id_c8aca14643"></div>

页脚包含:

<script type="text/javascript" src="http://localhost/mkpusa.org/nw/wp-content/plugins/rhj4-postlister/js/postlister.js?ver=3.9.2"></script>

当执行jQuery代码时,postlister_parms是一个函数:

postlister_parms: function (a,b){return new n.fn.init(a,b)}

但是postlister_parms.url,.action和.base_id都是未定义的。

请帮我看看我错过了什么。

2 个答案:

答案 0 :(得分:0)

结果代码应如下所示:

var postlister_parms = {"url":"the_url","action":"the_action","base_id":"the_baseid"};

在致电self::slug.'-postlister'之前,请确保带有句柄wp_localize_script的脚本已加入队列

答案 1 :(得分:0)

您是否阅读了documentation的Notes部分。对wp_enqueue_script和wp_localize_script的调用应该在wp_enqueue_scripts操作中,并且脚本应该在本地化之前排队。这是真的,它应该工作