从wordpress插件加载.js文件

时间:2013-08-10 09:26:52

标签: javascript jquery wordpress

我正在尝试从wp插件加载.js文件。

我加载jquery,jquery-UI和我的.js文件的代码如下所示,位于“main”插件文件中:

//Load Java and Jquery
function load_jquery() {

    // only use this method is we're not in wp-admin
    if (!is_admin()) {

        // deregister the original version of jQuery
        wp_deregister_script('jquery');
        wp_deregister_script('jquery-ui');
        wp_deregister_script('lyox-script');

        // discover the correct protocol to use
        $protocol='http:';
        if($_SERVER['HTTPS']=='on') {
            $protocol='https:';
        }

        // register the Google CDN version
        wp_register_script('jquery', $protocol.'//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', false, '1.10.2');
        wp_register_script('jquery-ui', $protocol.'//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js', false, '1.10.3');
        wp_register_script('lyox-script', plugins_url( '/includes/script.js' , __FILE__ ), array( 'jquery', 'jquery-ui' ) );

        // add it back into the queue
        wp_enqueue_script('jquery');
        wp_enqueue_script('jquery-ui');
        wp_enqueue_script('lyox-script');


    }

}

add_action('template_redirect', 'load_jquery');

然后在.js文件中我有以下代码,其中post()函数被添加到表单按钮onclick =“post();”:

$(document).ready(function() {

        function post() {

        var name = $('#name').val();


             $.post('process.php', {postname:name},
                    function(data)
                        {
                        alert(data);
                        $('#result').html(data);                        
             });
    }
});

当我在页面上试用时,仍然没有任何反应。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以使用admin ajax这样做: 我不会解释这些功能。你可以谷歌并学习。

第1步:将您的脚本的某些值本地化,以便在您的javascript文件中使用

获取admin-ajax.php网址

$author_nonce = wp_create_nonce( 'nk_author' );


    wp_localize_script( 'nk_script', 'nk_object',array( 'nk_ajax_url' => admin_url( 'admin-ajax.php' ) , 'nk_plugin_url' => plugins_url() ,'nk_author' => $author_nonce) );

第2步:在您的脚本中,您可以执行此操作。

var data = {
        action: 'nk_action', // the function that will be called in your plugin
        _ajax_nonce :   nk_object.nk_author, // nonce for security
        id : 'mydata'   //your data to be sent
        };

            //(admin ajax url , your data , callback for response )
        jQuery.post(nk_object.nk_ajax_url, data, function(response) {

               $('#nk_result').html(response);


            }


        });//end jQuery.post

第3步:在plugin.php文件中执行此操作

<?php
add_action('wp_ajax_nk_action', 'nk_action_callback');


function nk_action_callback() {
    check_ajax_referer('nk_author');

    if(isset($_POST['id']))
    {
        $id=$_POST['id'];
            echo $id;
    }
die();//dont forget to write die
}?>