2013-12-12 2 views
0

Привет всем Я пытаюсь вызвать функцию ajax в своем плагине, для этого я увидел это tutorial Но в моем случае никогда не выполняйте вызов 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')); 

    } 

эта функция должна выполняться при нажатии на днище этой формы

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

любая идея !!!

+0

Так что это не предупреждение r Eady? Кроме того, @RRikesh прав, вы используете один и тот же идентификатор формы дважды. Вы пробовали использовать форму submit вместо клика? Таким образом, вы также обслуживаете пользователей клавиатуры. –

ответ

1

Если вы используете методы OO, я подозреваю, что ваш Аякса крючок должен быть как:

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

Спасибо @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 после enqueing, и сделать ajaxurl доступны в качестве переменной

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

Затем обратитесь к Ajax с АЯКС URL переменной

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

Кроме того, если вы эхо от вашего php, вам нужно что-то сделать с ним в обратном вызове ajax, например

success: function(response) { 
      alert(response); 
       }; 
Смежные вопросы