javascript - wordpress 将变量传递给 javascript

标签 javascript jquery wordpress

我正在尝试将变量从插件传递到 javascript 文件。这是我的插件代码:

<?php
/**
 * @package JS Test
 * @version 1.0
 */
/*
Plugin Name: JS Test
Description: JS Test.
*/


add_action('init', 'my_init');
add_action( 'wp', 'test_js' );

function my_init() {
  wp_enqueue_script( 'jquery' );
}

function test_js() {

   wp_register_script ('testjs', plugins_url('jstest.js', __FILE__));
   wp_enqueue_script ('testjs');
   $my_arr = array('my array',
     'name' => 'Test',
   );
   $my_json_str = json_encode($my_arr); 

   $params = array(
     'my_arr' => $my_json_str,
   );

   wp_enqueue_script('my-java-script');
   wp_localize_script('my-java-script', 'php_params', $params);
}

这是 jstest.js 文件:

    jQuery(document).ready(function() {
      alert ('test');
      var my_json_str = php_params.my_arr.replace(/&quot;/g, '"');
      var my_php_arr = jQuery.parseJSON(my_json_str);
      alert(php_params);    
    });

我得到的是 JavaScript 中的这个错误: ReferenceError: php_params 未定义 有人看到我做错了什么吗?

最佳答案

您不需要只为您的本地化参数排队脚本,您可以为此使用您的 testjs,这是我制作的用于测试的快速插件:

<?php
/*
Plugin Name: PHP to JS
Plugin URI: http://en.bainternet.info
Description: wordpress passing variable to javascript 
http://stackoverflow.com/questions/12761904/wordpress-passing-variable-to-javascript
Version: 1.0
Author: Bainternet
Author URI: http://en.bainternet.info
*/

add_action('init', 'my_init');
add_action( 'wp', 'test_js' );

function my_init() {
 /wp_enqueue_script( 'jquery' );
}

function test_js() {

   wp_register_script ('testjs', plugins_url('jstest.js', __FILE__));
   wp_enqueue_script ('testjs');
   $my_arr = array('my array',
     'name' => 'Test',
   );
   $my_json_str = json_encode($my_arr); 

   $params = array(
     'my_arr' => $my_json_str,
   );


   wp_localize_script('testjs', 'php_params', $params);
}

add_action('wp_footer','footertestjs');

function footertestjs(){
    ?>
    <script>
      jQuery(document).ready(function() {
        alert ('test');
        var my_json_str = php_params.my_arr.replace(/&quot;/g, '"');
        var my_php_arr = jQuery.parseJSON(my_json_str);
        alert(php_params);    
      });
    </script>
    <?php
}

正如您在这里看到的,wp_localized_script 使用与您入队时相同的脚本,而不是伪造的脚本。

关于javascript - wordpress 将变量传递给 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761904/

相关文章:

javascript - 如何将粘性菜单包含在 float 侧边栏中?

jquery - 错误 : Unable to parse bindings. 消息:ReferenceError:Id 未定义;绑定(bind)值:文本:Id

php - 如何将背景颜色放在内容容器的底部?

php - Woocommerce:在前端使用元数据列出特定产品的销售情况

javascript - 如何同时实现 Javascript Promise.all 有趣的功能

javascript - 我将如何修复由于上面的元素动画而移动的元素?

jquery - 如何使用Jquery检查Json对象是否存在?

wordpress - 如何获取 WordPress 中当前页面的名称?

javascript - 无法通过谷歌javascript map api获取 map ,不会抛出错误,但iframe src约为:blank

java - 如何使用 PhantomJS 和 GhostDriver 单击模式对话框的关闭按钮