我已经阅读了六个如何将参数传递给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都是未定义的。
请帮我看看我错过了什么。
答案 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操作中,并且脚本应该在本地化之前排队。这是真的,它应该工作