バックエンド側に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を呼び出すことはできません。
コンソール 'ajaxurl'が失敗したかどうか確認してください。 – purvik7373
はい、それは働いていますが、毎回の応答は0 – MJ007