0

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

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

//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);                        
             });
    }
});

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

4

1 回答 1

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
}?>
于 2013-08-31T10:16:21.543 回答