WordPress插件AJAX POST参数

时间:2013-08-20 作者:user33913

我有问题。我不知道为什么,但表单中的参数没有传递太多aad\\u process\\u ajax()。

函数和jquery中的我的代码:

与我的表单配合使用:

function aad_render_admin() {

    ?>
    <div class="wrap">
        <h2><?php _e(\'Admin Ajax Demo\', \'aad\'); ?></h2>
            <div class="wrap">
        <form id="aad-form" action="" method="POST">
            <div>
<input type="text" name="name" />
<input type="text" name="header" />
<input type="text" name="body" />
<input type="text" name="urls" />
                <input type="submit" name="aad-submit" id="aad_submit" class="button-primary" value="<?php _e(\'Get Results\', \'aad\'); ?>"/>
                <img src="<?php echo admin_url(\'/images/wpspin_light.gif\'); ?>" class="waiting" id="aad_loading" style="display:none;"/>
            </div>
        </form>
        <div id="aad_results"></div>
    </div>
    <?php
}
Jquery代码:

jQuery(document).ready(function($) {
    $(\'#aad-form\').submit(function() {
        $(\'#aad_loading\').show();
        $(\'#aad_submit\').attr(\'disabled\', true);

      data = {
          action: \'aad_get_results\',
          aad_nonce: aad_vars.aad_nonce
      };

         $.post(ajaxurl, data, function (response) {
            $(\'#aad_results\').html(response);
            $(\'#aad_loading\').hide();
            $(\'#aad_submit\').attr(\'disabled\', false);
        });    

        return false;
    });
});
这个函数没有得到我的参数为什么?

function aad_process_ajax() {
    global $wpdb;

    echo $name = $_POST[\'name\'];
    $header = $_POST[\'header\'];
    $body = $_POST[\'body\'];
    $urls = $_POST[\'urls\'];
    echo \'xxxx\';

        $wpdb->insert(  
        \'wp_myprojects\',
            array(    \'name\' => $name,
                    \'header\' => $header,
                    \'body\' => $body,
                    \'urls\' => $urls,
                    ),
            array(    \'%s\',
                    \'%s\',
                    \'%s\',
                    \'%s\'
                    )
        );

    $wpdb->show_errors();
    /*EVRY PROCESS AJAX MUST DIE!!!!*/
    die();
    /*EVRY PROCESS AJAX MUST DIE!!!!*/
}
add_action(\'wp_ajax_aad_get_results\',\'aad_process_ajax\');
告诉我为什么函数中不显示参数aad_process_ajax().

问题在Jquery或Wordpress中?

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

在jQuery代码中

 data = {
      action: \'aad_get_results\',
      aad_nonce: aad_vars.aad_nonce
  };
你只是路过actionaad_nonce, 你是not 传递表单数据。

如果要传递变量,必须使用ajax传递,请使用以下方法:

  data = {
      action: \'aad_get_results\',
      aad_nonce: aad_vars.aad_nonce,
      form_data: $(\'#aad-form\').serialize()
  };
之后,在你的aad_process_ajax 功能使用:

function aad_process_ajax() {

  parse_str($_POST[\'form_data\'], $form_data);
  $name = isset($form_data[\'name\']) ? : \'\';
  $header = isset($form_data[\'header\']) ? : \'\';
  $body = isset($form_data[\'body\']) ? : \'\';
  $urls = isset($form_data[\'urls\']) ? : \'\';

  // the rest of your code here

}

结束