使用AJAX执行php文件
我已经为wordpress创建了一个自定义模板,我正在尝试执行一些php代码(deleteUser.php)来删除数据库中的记录,但我不知道如何在不使用alert的情况下运行代码。目前,我只是得到一个空对话框,而不是我的php代码从数据库中删除一行 ajax部分使用AJAX执行php文件,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我已经为wordpress创建了一个自定义模板,我正在尝试执行一些php代码(deleteUser.php)来删除数据库中的记录,但我不知道如何在不使用alert的情况下运行代码。目前,我只是得到一个空对话框,而不是我的php代码从数据库中删除一行 ajax部分 <?php echo '<script>'; echo 'function dltUser(siteID){'; echo "jQuery.ajax({"; echo
<?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>';
?>
删除警报。空对话框表示正在调用警报,但您没有消息。但是,PHP脚本运行时返回一个HTTP响应,代码为200 OK。如果不希望弹出窗口,请删除警报。如果您想要一条消息,请在脚本末尾回显一些内容
哦,放弃关闭?>如果之后没有任何输出。不要将$wpdb->query(…)
封装在echo
中,这样不会执行查询,它只会将命令作为字符串输出,您希望在代码执行后向AJAX函数返回一个值,而不是echo
它
如果不想使用alert()
阻止消息显示给用户,请改用console.log()
,请参阅
另外,正如Rory所说,不要对你写的每一行都使用回音。使用
连接或编写纯HTML,并在需要时插入PHP变量
恢复时,您的代码应如下所示:
阿贾克斯:
您需要从PHP页面返回数据,如中所示。还要注意,使用echo
输出一大块HTML/JS是非常笨拙的。为什么不写简单的HTML,然后在需要的地方只注入PHP变量。如果你不想使用alert()
只需删除那一行:)@RoryMcCrossan最初我回显$wpdb->query(“从我的站点删除,其中SiteID=%d”,“SiteID”)代码>但这没有什么区别。另外,我没有使用纯html,因为我的javascript函数由于某种原因无法被识别,所以我这样做是作为一个例子alternative@Condorcho将警报替换为msg将允许我的php文件运行。抱歉,我是Ajax新手,为什么要将查询函数包装在echo
中?从echo'$wpdb->查询中删除echo
(“从我的站点删除,其中SiteID=%d”,$SiteID)”只需执行$wpdb->query(…)
之后,返回一条成功消息或一个失败错误以查看它是否有效,您可以使用console.write(msg)将其记录到控制台如果不希望向用户显示,请使用code>而不是alert()
。
<?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)';
<script>
function dltUser(siteID) {
$.ajax({
data : siteID,
url : <?php get_stylesheet_directory_uri(); ?> + '/deleteUser.php',
method : 'POST',
success : function(msg) {
console.log(msg);
}
})
}
</script>
<?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';
?>