3

我第一次使用 WordPress 学习 Ajax。我正在使用小部件实现 Ajax 功能,但在提交表单后我得到 0。

你能指导我并解释为什么会这样,以便我能更好地理解。

我的代码:

wp_enqueue_script('jquery');

/**
 * Add function to widgets_init that'll load our widget.
 * @since 0.1
 */
add_action( 'widgets_init', 'example_load_widgets' );

/**
 * Register our widget.
 * 'Example_Widget' is the widget class used below.
 *
 * @since 0.1
 */
function example_load_widgets() {
    register_widget( 'Example_Widget' );
}

/**
 * Example Widget class.
 * This class handles everything that needs to be handled with the widget:
 * the settings, form, display, and update.  Nice!
 *
 * @since 0.1
 */
class Example_Widget extends WP_Widget {

    /**
     * Widget setup.
     */
    function Example_Widget() {
        /* Widget settings. */
        $widget_ops = array( 'classname' => 'example', 'description' => __('An example widget that displays a person\'s name and sex.', 'example') );

        /* Widget control settings. */
        $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'example-widget' );

        /* Create the widget. */
        $this->WP_Widget( 'example-widget', __('Example Widget', 'example'), $widget_ops, $control_ops );
    }

    /**
     * How to display the widget on the screen.
     */
    function widget() {
            echo $name = $_POST['name'];
            ?>
            <form type="post" action="" id="newCustomerForm">

                <label for="name">Name:</label>
                <input name="name" type="text" />

                <input type="hidden" name="action" value="example_load_widgets"/>
                <input type="submit" name="submit" value="Submit">
            </form>
            <br/><br/>
            <div id="feedback"></div>
            <br/><br/>

            <script type="text/javascript">
                jQuery('#newCustomerForm').submit(ajaxSubmit);

                function ajaxSubmit(){

                    var newCustomerForm = jQuery(this).serialize();

                    jQuery.ajax({
                        type:"POST",
                        url: "http://localhost/testing/wordpress/wp-admin/admin-ajax.php",
                        data: newCustomerForm,
                        success:function(data){
                            jQuery("#feedback").html(data);
                        },
                        error: function(errorThrown){
                            alert(errorThrown);
                        }  
                    });

                    return false;
                }
            </script>

            <?php
            die();
            add_action('wp_ajax_example_load_widgets', 'example_load_widgets');
            add_action('wp_ajax_nopriv_example_load_widgets', 'example_load_widgets');

        }
    }
4

1 回答 1

3

我已经创建了像你这样的 ajax 示例,可能会对你有所帮助。

试试这个:

首先创建插件并添加以下代码:

<?php
    function sampleHelloWorld() {
    ?>
        <form type="post" action="" id="newCustomerForm">
            <label for="name">Name:</label>
            <input name="name" type="text" /><br /><br />

            <input type="hidden" name="action" value="addCustomer"/>
            <input type="submit" name="submit" value="Submit">
        </form>

        <br/><br/>
        <div id="feedback"></div>
        <br/><br/>

        <script type="text/javascript">
            jQuery('#newCustomerForm').submit(ajaxSubmit);

            function ajaxSubmit(){

                var newCustomerForm = jQuery(this).serialize();

                jQuery.ajax({
                    type:"POST",
                    url: "http://localhost/testing/wordpress/wp-admin/admin-ajax.php",
                    data: newCustomerForm,
                    success:function(data){
                        jQuery("#feedback").html(data);
                    },
                    error: function(errorThrown){
                        alert(errorThrown);
                    }  
                });

                return false;
            }
        </script>
        <?php
    }

function widget_myHelloWorld($args) {
  extract($args);
  echo $before_widget;
  echo $before_title;?>Hello World Ajax<?php echo $after_title;
  sampleHelloWorld();
  echo $after_widget;
}

function myHelloWorld_init(){
  register_sidebar_widget(__('Hello World'), 'widget_myHelloWorld');     
}
add_action("plugins_loaded", "myHelloWorld_init");

wp_enqueue_script('jquery');

function addCustomer(){
    echo $name = $_POST['name'];
    die(); 
}

add_action('wp_ajax_addCustomer', 'addCustomer');
add_action('wp_ajax_nopriv_addCustomer', 'addCustomer');
?>
于 2013-10-20T08:58:24.060 回答