下午好,开发人员,我开始开发一个小插件只是为了开始学习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库的原因,它无法正常工作,但我不确定,任何帮助将不胜感激
答案 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')));
}