2017-01-25 14 views
1

バックエンド側に1つの学生フォームタイプのプラグインを作成して、データの挿入、更新、削除、リスト表示を行っています。Admin-ajaxが機能していませんか?

データをdbに保存するまですべてがうまくいっていました。$ wpdbクラスを使用してすべてのプロセスを知っています。このタスクは$ wpdbを使用していましたが、今はadmin-ajaxを使用して行います。

admin-ajaxが私のメインプラグインファイルで適用されることを知ります。 しかし、私は他のページst_db_processでajaxを呼び出す必要があります。 私はajaxを呼び出していますが、出力は0です。ここ

は私のコードです:

私のメインのプラグインファイル:

/* 
Plugin Name: student management 
Plugin URI: http://wordpress.org/plugins/student/ 
Description: This plugin is useful to add new student data,update data,delete data and list of all students. 
Author: Jayendra Manek 
Version: 1.0 
Author URI: 
*/ 

//Defining Constants 
define('ST_PLUGIN_PATH', plugin_dir_path(__FILE__)); 
define('ST_PLUGIN_URL',plugin_dir_url(__FILE__)); 

define('ST_VIEW_PATH', plugin_dir_path(__FILE__).'view/'); 
define('ST_VIEW_URL', plugin_dir_url(__FILE__).'view/'); 

define('ST_CLASS_PATH', plugin_dir_path(__FILE__).'classes/'); 
define('ST_CLASS_URL',plugin_dir_url(__FILE__).'classes/'); 

global $table_name; 
$table_name=$wpdb->prefix . 'student_management'; 

global $student_management,$st_db_process; 
$student_management=new student_management(); 

global $student_ajaxurl; 
$student_ajaxurl = admin_url('admin-ajax.php'); 

class student_management 
{ 

    function __construct() 
    { 
     //Plugin Activation Hook 
     register_activation_hook(__FILE__, array($this,'st_plugin_setup')); 

     //menu action and load script 
     add_action('admin_menu', array($this,'st_create_menu')); 
     add_action('admin_enqueue_scripts',array($this,'st_load_script')); 
     add_action('admin_enqueue_scripts',array($this,'st_include_class_files')); 

    } 

    function st_include_class_files() 
    { 
     require_once ST_CLASS_PATH.'st_db_process.php'; 
    } 

    //creating main-menu,sub-menu 
    function st_create_menu() 
    { 
     add_menu_page('All Students', 'Student Manage', 'manage_options', 'main-menu', array($this,'st_list_page')); 
     add_submenu_page('main-menu', 'Add new Student', 'Add New Student', 'manage_options', 'add-new-student',array($this,'st_add_new_student_page')); 
     add_submenu_page(null, 'Add new Student', 'Add New Student', 'manage_options', 'sub-menu',array($this,'st_add_new_student_page')); 
     add_submenu_page(null, 'Update Student', 'update data', 'manage_options', 'sub-menu-update',array($this,'st_update_data_page')); 
    } 

    //list page 
    function st_list_page() 
    { 
     require_once ST_VIEW_PATH . 'list.php'; 
    } 

    //add new student page 
    function st_add_new_student_page() 
    { 
     require_once ST_VIEW_PATH . 'add.php'; 
    } 

    //update student data page 
    function st_update_data_page() 
    { 
     require_once ST_VIEW_PATH . 'edit.php'; 
    } 

    //Loading Script & Css 
    function st_load_script() 
    { 
     wp_enqueue_script('bootstrap-js','//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js',array('jquery-cdn'),true); 
     wp_enqueue_style('bootstrap-css','//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css',true); 
     wp_enqueue_style('style-css',ST_PLUGIN_URL.('css/style.css'),true); 
     wp_enqueue_script('validate-js',ST_PLUGIN_URL.('js/validate_data.js'),array('jquery'),'1.0',false); 

    } 


    // Creating New Database 
    function st_plugin_setup() 
    { 
      global $wpdb; 
      $table_name = $wpdb->prefix . 'student_management'; 
      $charset_collate = $wpdb->get_charset_collate(); 

      $sql = "CREATE TABLE $table_name (
      id mediumint(9) NOT NULL AUTO_INCREMENT, 
      name varchar(100) NOT NULL, 
      email varchar(100) NOT NULL, 
      number int(10) NOT NULL, 
      address text NOT NULL, 
      PRIMARY KEY (id) 
     ) $charset_collate;"; 

      require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
      dbDelta($sql); 
    } 
} 

JSコード:

jQuery(document).ready(function($) { 

}); 
function st_validate_add_data(){ 

    var name = jQuery('#name').val(); 
    var email=jQuery('#email').val(); 
    var number=jQuery('#pnumber').val(); 
    var address=jQuery('#address').val(); 
    var path=jQuery('#st-path').val(); 



    var flag=0; 

    if(name=='') 
    { 
     jQuery('#name_error').html("Please enter student name"); 
     flag=1; 
    } 

    if(email=='') 
    { 
     jQuery('#email_error').html("Please enter student email"); 
     flag=1; 
    } 
    if(number=='') 
    { 
     jQuery('#number_error').html("Please enter student phone number"); 
     flag=1; 
    } 
    if(address=='') 
    { 
     jQuery('#address_error').html("Please enter student address"); 
     flag=1; 
    } 

    var data = { 
     'action': 'my_action', 
     'whatever': 1234 
    }; 

    if(flag==0) 
    { 
     jQuery.ajax({ 
      type: 'POST', 
      url: ajaxurl, 
      dataType: 'json', 
      data:'action=st_ajax_call', 
      success:function(msg){ 
       alert(msg); 
      }, 
      error: function(errorThrown) { 
       alert(errorThrown); 
      } 
     }); 



    } 
    return false; 

} 

(私はAJAXを呼びたい)私のデータベース・プロセスクラス:

if(!class_exists('st_db_process')) { 
    class st_db_process 
    { 
     function __construct() 
     { 
//  check_ajax_referer(); 
      add_action('wp_ajax_st_ajax_call', array($this, 'st_ajax_func')); 
      add_action('wp_ajax_nopriv_st_ajax_call', array($this, 'st_ajax_func')); 
     } 

     function st_ajax_func() 
     { 
      echo "<pre>"; 
      print_r("helloo"); 
      echo "</pre>"; 
      echo "<pre>"; 
      print_r($_POST); 
      echo "</pre>"; 
      exit(); 
      wp_die(); 
     } 

     function st_add_data11($table_name, $data) 
     { 
      global $wpdb, $table_name; 
      $wpdb->insert($table_name, $data); 
     } 

     function st_update_data($table_name, $data, $id) 
     { 
      global $wpdb, $table_name; 
      $wpdb->update($table_name, $data, $id); 
     } 

     function st_get_data($query, $type) 
     { 
      global $wpdb; 
      $data = $wpdb->get_results($query, $type); 
      return $data; 
     } 
    } 
    global $st_db_process; 
    $st_db_process = new st_db_process(); 
} 

plz help、私最後の2日間この仕事で立ち往生した。 メインプラグインファイルでajaxを呼び出すことはできますが、クラスファイルでajaxを呼び出すことはできません。

+0

コンソール 'ajaxurl'が失敗したかどうか確認してください。 – purvik7373

+0

はい、それは働いていますが、毎回の応答は0 – MJ007

答えて

0

私はmyshelf のst_db_process.phpファイルが正しくロードされていませんでした。私はちょうどメインのプラグインファイルの一番上に置く必要があります。 ファイルの読み込みに問題があり、私のコードは完璧でした。 この行はプラグイン開始時に置かれ、プラグインは機能します。

require_once ST_CLASS_PATH.'st_db_process.php'; 
関連する問題