2016-11-02 3 views
1

Я пытаюсь вставить значения всех отмеченных флажков в базу данных wordpress в таблицу, которую я создал сам. Вот мой код JQuery:Вставка значений флажка в базу данных WordPress

$(document).ready(function(){ 
    $('#submit').click(function(){ 
     var insert = []; 
     $('.get_value').each(function(){ 
      if($(this).is(":checked") ){ 
       insert.push($(this).val()); 
      } 
     }); 
     insert = insert.toString(); 
     $.ajax({ 
      url:"insert.php", 
      method:"POST", 
      data:{insert:insert}, 
      success:function(data){ 
       $('.result').html(data); 
      } 
     }); 

    }); 
}); 

и моя вставка кода (его в insert.php):

if (isset($_POST["insert"])){ 
    global $wpdb; 
    $table_name = $wpdb->prefix . "status"; 
    $wpdb->insert($table_name, array(
     'status' => 'approved' 
    ); 
} 

его не показывает никаких ошибок, но его не вставляя either.I не знает, если эта информация полезно, но флажки находятся на бэкэнде администратора как часть настраиваемого типа сообщения.

ответ

1

Это не сработает, потому что вы вызываете insert.php в свой вызов ajax. URL должен указывать на ajaxurl, который локализован со сценарием, где находится ваш ajax.

Так что, если ваш сценарий находится в файле под названием custom.js и вы его помещён это нравится:

wp_enqueue_script('my_custom_script', get_template_directory_uri() . '/js/custom.js', array('jquery'),'', true); 

Тогда вы будете локализовать АЯКС URL как

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

И использовать его в вашем сценарий, подобный

$(document).ready(function(){ 
    $('#submit').click(function(){ 
     var insert = [];   
     $('.get_value').each(function(){ 
      if($(this).is(":checked") ){ 
       insert.push($(this).val()); 
      } 
     }); 
     insert = insert.toString(); 
     $.ajax({ 
      url: ajax_call.ajaxurl, 
      method:"POST", 
      data:{ 
       'action': 'my_action_callback', 
       'insert': insert, 
      }, 
      success:function(data){ 
       $('.result').html(data); 
      } 
     }); 
    }); 
}); 

Также ваш код insert.php должен находиться внутри функции подсел на wp_ajax крючков

add_action('wp_ajax_my_action_callback', 'my_action_callback'); 
add_action('wp_ajax_nopriv_my_action_callback', 'my_action_callback'); 

function my_action_callback(){ 
    if (isset($_POST["insert"])){ 
     global $wpdb; 
     $table_name = $wpdb->prefix . "status"; 
     $wpdb->insert($table_name, array(
      'status' => 'approved' 
     ); 
    } 
} 

https://codex.wordpress.org/AJAX_in_Plugins

+1

удивительные! работал отлично. спасибо: D –

+0

С удовольствием помогите :) –

Смежные вопросы