【发布时间】:2012-02-18 00:26:14
【问题描述】:
我正在 Wordpress 中开发一个插件,但在尝试使用 Ajax 将数据发布到单独的 PHP 文件而不重新加载页面时遇到了困难。在后端,PHP 文件依赖if( isset() ) 执行 SQL 查询。在客户端,用户应该会看到各个记录淡出和一条记录已成功删除的消息。
更新:到目前为止,javascript 工作正常,单击表单按钮后,正确的div-s 淡入淡出。但是,PHP 文件没有收到任何值,正如使用 var_dump 测试的那样。
HTML 代码:
<!-- problem: when setting "action" to a url, that page is automatically loaded. I want to stay on the existing page. -->
<form action='' id='form-delete-assoc' method='post'>
<input name='remove_all' type='submit' id='remove-all' value='Remove All'></input>
</form>
JQUERY:(已更新回答者建议的一些修复)
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('tr.assoc_row').show();
$('#settings-removed-msg').hide();
$('#new-assoc-msg').hide();
$('#formdeleteassoc').submit(function(e){
e.preventDefault();
$.ajax ({
type: 'POST',
url: '<?php echo $cb_t2c_remove_all_url; ?>',
data: {removeall: 'yes'
},
success: function() {
$('#settings-removed-msg').fadeIn('fast');
$('tr.assoc_row').fadeOut('fast');
}
});
});
$('#formsavesettings').submit(function(){
$('#new-assoc-msg').fadeIn('fast');
});
});
</script>
remove_all.php:
<?php
//remove_all.php
global $wpdb;
$prefix = $wpdb->prefix;
$remove_var_dump = $_POST['removeall']; //returning NULL
var_dump($remove_var_dump);
if ( isset( $_POST['removeall'] ) ){
$wpdb->query("DELETE FROM ".$prefix."cb_tags2cats");
}
?>
【问题讨论】:
-
尝试添加return false;在你的 Ajax 调用之后。
标签: php jquery ajax wordpress post