我试图从wordpress中的ajax请求获得响应。但每次我尝试执行请求时,它都会得到0作为响应。 下面是我在java脚本中的代码
$("#submit").click(function(e) {
e.preventDefault();
var ajaxurl = '/WordPress/wp-admin/admin-ajax.php';
alert(dataString);
$.post( ajaxurl,
{
'action': 'my_action',
'data': 'name'
},
function(response){
alert('The server responded: ' + response);
}
);
});
在function.php
中add_action('wp_ajax_my_action','data_insert');
add_action('wp_ajax_nopriv_my_action','data_insert');
function data_insert()
{
echo "hello";
die;
}
答案 0 :(得分:1)
你走了:
<强> JavaScript的:强>
$(document).ready(function() {
$("#submit").click(function(e) {
var demo = 'demo';
var ajaxurl = '<?php echo admin_url("admin-ajax.php", null); ?>';
data = { action: "data_insert", demo: demo};
$.ajax({
url: ajaxurl,
data: data,
dataType: 'json',
type: 'post',
success: function(response) {
console.log(response);
}
});
});
});
<强> PHP:强>
add_action('wp_ajax_data_insert', 'data_insert');
add_action('wp_ajax_nopriv_data_insert', 'data_insert');
function data_insert() {
$data = $_POST['demo'];
echo json_encode($data);
die();
}
答案 1 :(得分:0)
如果您使用外部js文件以便在WordPress中调用AJAX,则必须本地化您的脚本文件。
$("#submit").click(function(e) {
e.preventDefault();
$.post( front_ajax.ajaxurl,
{
'action': 'my_action',
'data': 'name'
},
function(response){
alert('The server responded: ' + response);
}
);
});
function my_enqueing_function() {
wp_enqueue_script( 'custom-js', get_stylesheet_directory_uri() .'your_path_here/custom.js', array('jquery'), time(), true );
//Localizing our custom-js script to be called using front_ajax
wp_localize_script( 'custom-js', 'front_ajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) );
}
add_action('wp_ajax_my_action','data_insert');
add_action('wp_ajax_nopriv_my_action','data_insert');
function data_insert()
{
echo "hello";
wp_die;
}
尝试以上方法。应该工作。