使用AJAX执行php文件

时间:2017-04-27 15:35:16

标签: php jquery ajax wordpress

我已经为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;

2 个答案:

答案 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';

?>