在WP Theme成功实施后,我正试图在我的Under-dev Plugin之一中实现WP AJAX。
function deactivate_ad() {
if( isset( $_POST['id'] ) ) {
echo $_POST['id'];
echo 'Deactivated';
die;
} else {
echo 'Sorry, not done';
die;
}
wp_die(); // ajax call must die to avoid trailing 0 in your response
}
add_action('wp_ajax_deactivate_ad', 'deactivate_ad');
//add_action( 'wp_ajax_nopriv_deactivate_ad', 'deactivate_ad'); //not logged in users
在某个地方的功能下,我添加了带有动态ID的表单:
<form action="" enctype="multipart/form-data" method="post">
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
jQuery(document).on('click', '.deactivate-ad', function () {
var id = this.id;
alert(id);
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {
"action": "deactivate_ad",
"id": id
},
success: function (data) {
alert(data);
}
});
});
</script>
<?php
//after the db Query, within the foreach loop
foreach( $ad_query as $the_ad ){
$element_id = 'deactivate_' . $the_ad->id . '_' . wp_create_nonce('deactivate_' . $the_ad->id );
// I'm just checking with the 'Deactivate' button first
echo ( $the_ad->ad_status == 1 ? '<a class="deactivate-ad" href="#" id="'. $element_id .'">Deactivate</a>' : '<a href="?page=site-ad&id='. $the_ad->id .'&activate=true&success=true">Activate</a>' );
}
?>
</form>
我只是想激活AJAX,以便我可以随心所欲地做任何事情。但是首先alert(id)
我可以成功提醒id
使用nonce,但alert(data)
始终返回0
(零)。
我在开头将最新的jQuery(http://code.jquery.com/jquery-latest.min.js)排入队列并检查了所有实例。这次我做错了什么 - 我在一个主题中获得的过程 - 我之前工作过。
答案 0 :(得分:3)
您应该将以下代码从adzonia-view.php
重新置于wp-adzonia.php
function deactivate_ad() {
if( isset( $_POST['id'] ) ) { echo $_POST['id']; echo 'Deactivated';
} else { echo 'Sorry, not done';
} die();
}
add_action('wp_ajax_deactivate_ad', 'deactivate_ad');
<强>原因:强>
因为您在菜单页面中编写了这些功能。它已经与admin_menu
钩子挂钩了。因此,在wp_ajax_*
中添加操作为时已晚。
答案 1 :(得分:0)
尝试:data: { action: "deactivate_ad", id: id }
- 似乎是一个错字!
编辑:好的我实现了这样:
页面xy.php:
<div class="deactivate-ad">Jup</div>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
jQuery(document).on('click', '.deactivate-ad', function () {
var id = 5;
console.log(id);
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {
action: "deactivate_ad",
id: id
},
success: function (data) {
alert(data);
}
});
});
</script>
function.php:
function deactivate_ad() {
if( isset( $_POST['id'] ) ) {
echo $_POST['id'];
echo 'Deactivated';
die;
} else {
echo 'Sorry, not done';
die;
}
wp_die(); // ajax call must die to avoid trailing 0 in your response
}
add_action('wp_ajax_deactivate_ad', 'deactivate_ad');
//add_action( 'wp_ajax_nopriv_deactivate_ad', 'deactivate_ad'); //not logged in users
警报输出为:5Deactivated
意思是,我不认为AJAX是你的问题。不幸的是,由于它不够,我无法测试其他代码!