未定义AJAX对象-JS文件在插件文件夹中

时间:2016-08-04 作者:Jerick Allan Dimaano

我正在尝试修改插件脚本,在执行一个函数后添加电子邮件通知,但我总是遇到一个错误:“未捕获引用错误:未定义ajax\\u send\\u notification\\u对象”。对不起,伙计们,我刚接触wordpress,这是我的第一个问题。我不确定这是否是因为JS文件在plugins文件夹中。提前谢谢。

这是我在函数中的代码。php:

function ajax_send_notification_init(){

    wp_register_script(\'ajax-send-notification-script\', plugins_url() . \'/plugin-name/js/the-plugin.js\', array(\'jquery\') ); 

    wp_localize_script( \'ajax-send-notification-script\', \'ajax_send_notification_object\', array( 
        \'ajaxurl\' => admin_url( \'admin-ajax.php\' )
    ));

}

add_action(\'init\', \'ajax_send_notification_init\');


function ajax_send_notification(){      
    echo json_encode(array("message" => "test"));
    exit;
}

add_action( \'wp_ajax_ajax_send_notification\', \'ajax_send_notification\' );
add_action( \'wp_ajax_nopriv_ajax_send_notification\', \'ajax_send_notification\' );
下面是我在js文件中插入的代码:

function sendNotification(){

    $.ajax({
        type: \'POST\',
        dataType: \'json\',
        url: ajax_send_notification_object.ajaxurl,
        data: { 
            \'action\': \'ajax_send_notification\'
        },
        success: function(data){
            alert(data.messsage);
        },

        error: function(errorThrown){
            console.log(errorThrown);
        }

    });            
}

1 个回复
SO网友:Aftab

您在错误的挂钩中注册了JS代码。应始终使用wp\\u enqueue\\u脚本注册CSS和JS。此外,您只注册了JS代码。您尚未使用将JS文件排入队列wp_enqueue_script( \'ajax-send-notification-script\' );

function ajax_send_notification_init(){

    wp_register_script( \'ajax-send-notification-script\', plugins_url() . \'/plugin-name/js/the-plugin.js\', array(\'jquery\') ); 

    wp_localize_script( \'ajax-send-notification-script\', \'ajax_send_notification_object\', array( 
        \'ajaxurl\' => admin_url( \'admin-ajax.php\' )
    ));
    // To enqueque the JS file.
    wp_enqueue_script( \'ajax-send-notification-script\' );

}

add_action(\'wp_enqueue_scripts\', \'ajax_send_notification_init\');

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i