我已经为wordpress创建了一个自定义模板,我试图执行一些PHP代码(deleteUser.php)来删除数据库中的记录,但我不确定如何运行不使用警报的代码。目前我只是得到一个空的对话框,而不是我的PHP代码从数据库中删除一行。
ajax part
<?php
echo '<script>';
echo 'function dltUser(siteID){';
echo "jQuery.ajax({";
echo "data: 'siteID=' + siteID,";
echo "url:"."'".get_stylesheet_directory_uri()."/deleteUser.php"."',";
echo "method: 'POST', ";
echo "success: function(msg) {";
echo "alert(msg);";
echo "}";
echo "});";
echo '}';
echo '</script>';
?>
deleteUser.php - 删除行的代码
<?php
include_once($_SERVER['DOCUMENT_ROOT'].'/wp-config.php' );
global $wpdb;
$siteID = $_POST['siteID'];
echo '$wpdb->query("DELETE FROM my_site WHERE SiteID = %d",$siteID)';
&GT;
答案 0 :(得分:0)
删除提醒。空对话框表示正在调用警报,但您没有消息。但是,PHP脚本运行返回带有200 OK代码的HTTP响应。如果您不想要弹出窗口,请删除警报。如果你想要一条消息,请在脚本末尾回复一些内容。
哦,放弃收盘?&gt;如果之后没有任何输出。
答案 1 :(得分:0)
不要将$wpdb->query(...)
包装在echo
内,不会执行查询,它只会将命令作为字符串输出,并且您希望return
一个值执行代码后的AJAX函数,而不是echo
它。
如果您不想使用alert()
阻止消息向用户显示,请改用console.log()
,请参阅Console.log()
另外,正如Rory所说,不要为你写的每一行使用回声。使用.
连接或编写纯HTML,并在需要时注入PHP变量。
恢复,你的代码应该是这样的:
的Ajax:
<script>
function dltUser(siteID) {
$.ajax({
data : siteID,
url : <?php get_stylesheet_directory_uri(); ?> + '/deleteUser.php',
method : 'POST',
success : function(msg) {
console.log(msg);
}
})
}
</script>
deleteUser.php
<?php
include_once ($_SERVER['DOCUMENT_ROOT'] . '/wp-config.php');
global $wpdb;
$siteID = $_POST['siteID'];
if ($wpdb->query("DELETE FROM my_site WHERE SiteID = %d", $siteID)) {
return 'Success';
}
return 'Error';
?>