I am using admin ajax request in wordpress plugin to access a function inside php class.
But, it is giving 400 bad request error:
my class file name: class.ajaxtest.php
ajaxtest_PLUGIN_URL is defined in main plugin php file as plugin_dir_url(FILE)
<?php
class ajaxtest
{
// Stated whether the plugin is initiated or not
private static $initiated = false;
// The init function
public static function init()
{
if (!self::$initiated) {
self::init_hooks();
}
// Start the session if it doesn't exist yet
if (!session_id()) {
session_start();
}
return;
}
private static function init_hooks()
{
self::$initiated = true;
// Add hooks/actions
add_action("wp_enqueue_scripts", ["ajaxtest", "euqueue_scripts"]);
add_action("wp_ajax_nopriv_add_favorites", [
"ajaxtest",
"add_favorites",
]);
add_action("wp_ajax_add_favorites", ["ajaxtest", "add_favorites"]);
// Register stylesheets
}
// Enqueue the scripts for Wordpress
public static function euqueue_scripts()
{
wp_register_script(
"ajaxtest_fav_script",
ajaxtest_PLUGIN_URL . "favjs.js",
["jquery"]
);
wp_localize_script("ajaxtest_fav_script", "ajaxtest_Ajax", [
"ajaxurl" => admin_url("admin-ajax.php"),
]);
wp_enqueue_script("ajaxtest_fav_script");
}
// add favorite properties
public static function add_favorites()
{
echo "success";
wp_die();
}
}
my jquery script name: favjs.js
jQuery(document).ready(function()
{
jQuery(".ajaxtest-fav-output").click(function(e){
e.preventDefault();
jQuery.ajax({
url: ajaxtest_Ajax.ajaxurl,
type: 'POST',
dataType:'json',
data: {
'action':'add_favorites'
},
success: function(response) {
alert(response);
}
});
});
});
I tried everything but couldn't make it work. it is always giving 0 as output.
please help me.
thanks