无法在wordpress ajax上加载jQuery

时间:2018-10-03 20:16:44

标签: jquery ajax wordpress

下午好,开发人员,我开始开发一个小插件只是为了开始学习wordpress,我的问题是我无法加载wordpress使用的默认版本以外的另一版本的jquery,即默认的苗条功能。我正在尝试使用AJAX构建该版本,但我认为该版本在精简版上不可用 我得到的错误是:

   jQuery.Deferred exception: jQuery.post is not a function TypeError: jQuery.post is not a function
at HTMLDocument.<anonymous> (http://1upscratch.com/wp-content/plugins/calculadora-wordpress-plugin/js/memo.js?ver=4.9.8:21:9)
at l (https://code.jquery.com/jquery-3.3.1.slim.min.js:2:29567)
at c (https://code.jquery.com/jquery-3.3.1.slim.min.js:2:29869) undefined
Uncaught TypeError: jQuery.post is not a function
at HTMLDocument.<anonymous> (memo.js?ver=4.9.8:21)
at l (jquery-3.3.1.slim.min.js:2)
at c (jquery-3.3.1.slim.min.js:2)

在插件文件上,我具有以下代码来加载标准jquery

add_action('wp_enqueue_scripts', 'load_scripts');
function load_scripts() {
//USAR JQUERY QUE POSSUI AJAX--------
wp_dequeue_script('jquery');
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://code.jquery.com/jquery-3.3.1.js', '','', true);
wp_enqueue_script('jquery');
wp_register_script('memo', plugin_dir_url(__FILE__) . "js/memo.js", array('jquery'));
wp_register_script('main', plugin_dir_url(__FILE__) . 'js/main.js');
wp_enqueue_script('memo');
wp_enqueue_script('main');
wp_localize_script('memo', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));
}

我写的javascript函数是:

function salvar_resultado(memoria)
{
    //PEGAR O RESULTADO DO VISOR
var result = document.getElementById('visor').innerHTML;
//CHAMADA JQUERY
jQuery(document).ready(function ($)
{
    //AJAX
    var data = {
    'action': 'salvar_resultado',
    'resultado': result,  
            'memoria':memoria
};
// We can also pass the url value separately from ajaxurl for front end AJAX implementations
jQuery.post(ajax_object.ajax_url, data, function(response) {
    alert('Got this from the server: ' + response);
});
});

}

并且我在插件上的php代码是:

add_action('wp_ajax_salvar_resultado', 'salvar_resultado');
add_action('wp_ajax_no_priv_salvar_resultado', 'salvar_resultado');
add_action('wp_ajax_carregar_resultado', 'carregar_resultado');
add_action('wp_ajax_no_priv_carregar_resultado', 'carregar_resultado');

function salvar_resultado() {
    $memoria = $_POST['memoria'];
$resultado = $_POST['resultado'];
global $wpdb;
$tabela = $wpdb->prefix . 'calc_memoria';
$wpdb->insert($tabela, array(
    $memoria => $resultado)
);
wp_die();
}

我认为至少由于jQuery库的原因,它无法正常工作,但我不确定,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

尝试此代码。您正在使用精简版的jquery。 Ajax在苗条版本中不起作用。

add_action('wp_enqueue_scripts', 'load_scripts');

function load_scripts() {
    //USAR JQUERY QUE POSSUI AJAX--------
    wp_dequeue_script('jquery');
    wp_deregister_script('jquery');
    wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js', '','', true);
    wp_enqueue_script('jquery');
    wp_register_script('memo', plugin_dir_url(__FILE__) . "js/memo.js", array('jquery'));
    wp_register_script('main', plugin_dir_url(__FILE__) . 'js/main.js');
    wp_enqueue_script('memo');
    wp_enqueue_script('main');
    wp_localize_script('memo', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));
}