doudeng2016
2018-05-16 06:05
浏览 76

为什么Javascript文件从php文件中获取空数组? Wordpress插件

I am creating the plugin that calculates income taxes. I don't need to reload page so I am going to use ajax. I need to get a plugin's path and transfer it to javascript file.

$my_data_array = [];

add_shortcode('penalty', 'penalty_calculator');
add_action( 'wp_enqueue_scripts', 'my_styles_scripts' );

function my_styles_scripts(){
    global $my_data_array;

    wp_register_script( 'my-js', plugins_url( 'js/my_functions.js', __FILE__ ), array('jquery'), '', true );

    wp_enqueue_script( 'my-js' );

    wp_localize_script( 'my-js', 'dataObj', $my_data_array );
}



function penalty_calculator(){
    global $my_data_array;

    $my_data_array= [
        'path' => plugin_dir_url(__FILE__)
    ];


    ?>

    <form action="" method="post" class="income_tax_calculator">

        <?php wp_nonce_field(); ?>

        <p>
            <label for="income_tax">How many charges are there?</label>
            <input type="text" name="income_tax" id="income_tax">
        </p>

        <p>
            <input type="submit" name="calculate_income_tax" id="calculate_income_tax" value="Calculate">
        </p>

    </form>

    <?php

}

my js file:

jQuery(document).ready(function($){

    console.log(dataObj)   // empty!

    $("#calculate_income_tax").click(function(event){

        event.preventDefault();

        var income_tax = $("#income_tax").val();

        // ajax, post, calculate.php is in plugin directory

    });

});

My javascript file get empty dataObj array from php file and I don't know why. I load my javascript file after jQuery, in the footer, but array is till empty. Javascript file is really found in the footer in view source code.

Generally, am I in a good way? This is my first plugin.

图片转代码服务由CSDN问答提供 功能建议

我正在创建计算所得税的插件。 我不需要重新加载页面所以我将使用ajax。 我需要获取插件的路径并将其传输到javascript文件。

  $ my_data_array = []; 
 
add_shortcode('penalty','penalty_calculator'); 
add_action  ('wp_enqueue_scripts','my_styles_scripts'); 
 
function my_styles_scripts(){
 global $ my_data_array; 
 
 wp_register_script('my-js',plugins_url('js / my_functions.js',__ FILE__),array  ('jquery'),'',true); 
 
 wp_enqueue_script('my-js'); 
 
 wp_localize_script('my-js','dataObj',$ my_data_array); 
} 
  
 
 
 
function penalty_calculator(){
 global $ my_data_array; 
 
 $ my_data_array = [
'path'=&gt;  plugin_dir_url(__ FILE __)
]; 
 
 
?&gt; 
 
&lt; form action =“”method =“post”class =“income_tax_calculator”&gt; 
 
&lt;?php wp_nonce_field(  );  ?&gt; 
 
&lt; p&gt; 
&lt; label for =“income_tax”&gt;有多少费用?&lt; / label&gt; 
&lt; input type =“text”name =“income_tax”id  =“income_tax”&gt; 
&lt; / p&gt; 
 
&lt; p&gt; 
&lt; input type =“submit”name =“calculate_income_tax”id =“calculate_income_tax”value =“Calculate”&gt; 
  &lt; / p&gt; 
 
&lt; / form&gt; 
 
&lt;?php 
 
} 
   
 
 

我的js文件:

  jQuery(document).ready(function($){
 
 console.log(dataObj)// empty!
 
 $(“#calculate_income_tax”)。  click(function(event){
 
 event.preventDefault(); 
 
 var income_tax = $(“#income_tax”)。val(); 
 
 // ajax,post,calculate.php is 在插件目录
 
}); 
 
}); 
   
 
 

我的javascript文件从php文件获取空dataObj数组,我不知道 为什么。 我在jQuery之后加载我的javascript文件,在页脚中,但数组是空的。 Javascript文件确实在视图源代码的页脚中找到。

一般来说,我是一个好方法吗? 这是我的第一个插件。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doucong1268 2018-05-16 13:20
    已采纳

    I needed to use this:

    add_action( 'wp_footer', 'my_styles_scripts' );
    

    not

    add_action( 'wp_enqueue_scripts', 'my_styles_scripts' );
    
    已采纳该答案
    打赏 评论

相关推荐 更多相似问题