2013-12-12 79 views
0

嗨,大家我想在我的插件中調用一個ajax函數,爲此我看到了這個 tutorial但在我的情況下,從不執行de ajax調用。如何用ajax創建一個插件

首先在構造函數中我有這樣的:

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')); 

    } 

這個函數,當我以這種形式的BUTTOM點擊

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>'; 
    } 

我在表單中創建動態油田所以現在執行我需要把所有這個領域創造出一個metabook。

我知道一個像我這樣的領域:$('#camposMeta').serialize()但是當我打電話給文件createMetaBox.php傳遞這個參數程序不工作!

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

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

任何想法!

+0

所以它不提醒r伊迪?另外,@RRikesh是正確的,你使用兩次相同的表單ID。你嘗試使用表單提交而不是點擊?這樣你也可以滿足鍵盤用戶的需求。 –

回答

1

如果您在使用面嚮對象的技術,我懷疑你的Ajax鉤應該是這樣的:

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

如果你想阿賈克斯爲未登錄用戶誰執行(例如前端),您還應該添加:

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

Thanks @RRikesh我修改了調用方法,但響應爲空。當我點擊布魯姆執行這個/wp-admin/post.php?post=102&action=edit&action=aad_get_results但結果是空的 – user852610

+0

請發佈您的完整代碼。 – RRikesh

+0

嗨@RRikesh我改變我的問題,我把我所有的代碼我終於看到我的file.js但從來沒有調用ajax函數。任何想法!!謝謝 – user852610

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