如何使用ajax创建插件

时间:2013-12-12 10:28:31

标签: ajax wordpress

大家好我想在我的插件中调用ajax函数,为此我看到了这个 tutorial但在我的情况下,永远不要执行de ajax call。

首先在构造函数中我有这个:

  function __construct(){
    add_action('init', array( $this, 'register_script'));
     ....
    add_action('wp_ajax_aad_get_results', array($this, 'aad_process_ajax'));

  }



  function register_script(){
   wp_register_script('myplugin', plugins_url('/includes/myplugin.js', __FILE__), array('jquery'));
   wp_enqueue_script('myplugin');
   wp_enqueue_script('add-ajax', plugin_dir_url(__FILE__).'includes/js/add-ajax.js', array('jquery'));

  }

当我点击此表格的按钮时,必须执行此功能

  public function rbk_show_box( $post ) {

    // get post meta values
    $values = get_post_custom( $post->ID );          
    // echo '<input type="hidden" name="',$post->post_title.'_add_box_nonce" value="',wp_create_nonce(basename(__FILE__)),'" />';
      echo '<form id="camposMeta" name="este" method="POST">';
      echo'</form>';
      echo '<form id="camposMeta" name="este" method="POST" >';
      echo '<input type="hidden" name="',$post->post_title,'">';
      echo '<fieldset id="campos1" class="clonedInput">';
      echo '<label>Name</label>';
      echo '<input type="text" name="name1" id="name1" />';
      echo '<select name="select1" id="select1">';
      echo '<option >Selecciona el tipo</option>';
      echo '<option>Text</option>';
      echo '<option>TextArea</option>';
      echo '<option>File</option>';
      echo '</select>';
      echo'</fieldset>';
      echo '<input type="button" id="btnAdd" value="+" />';
      echo'<input type= "submit" id="btn_submit" value="Crear Meta Box">';
    echo'</form>';
  }

我在表单中创建动态字段,所以现在我需要使用所有这些字段来创建元数据。

我知道我的字段是这样的:$('#camposMeta').serialize()但是当我调用文件createMetaBox.php来传递这个参数时程序不起作用!!

$('#btn_submit').click(function(){
        alert('ready')
        $.ajax({
            // url: createMetaBox.php
            data: {
                action: 'aad_get_results',
                //valores:$('#camposMeta').serialize()

            },
            success:function(){
            }
        });
    });

任何想法!!!

2 个答案:

答案 0 :(得分:1)

如果您正在使用OO技术,我怀疑您的ajax挂钩应该是:

add_action('wp_ajax_aad_get_results', array( $this, 'aad_process_ajax' ) );

如果您希望Ajax为未登录的用户(例如前端)执行,您还应该添加:

add_action('wp_ajax_nopriv_aad_get_results', array( $this, 'aad_process_ajax' ) );

答案 1 :(得分:1)

您必须发布到ajax网址。

首先将您的javascript置于其后进行本地化,并将ajaxurl作为变量提供

wp_localize_script( 'quote_script', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );

然后使用ajax url变量

调用你的ajax
$('#btn_submit').click(function(){
    $.ajax({
    url: MyAjax.ajaxurl;
    data: {
    action: 'aad_get_results',
    },

另外,如果你从你的php函数回复,你需要在ajax回调中做一些事情,例如

    success: function(response) {
          alert(response);
               };