Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AJAX执行php文件_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

使用AJAX执行php文件

使用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

我已经为wordpress创建了一个自定义模板,我正在尝试执行一些php代码(deleteUser.php)来删除数据库中的记录,但我不知道如何在不使用alert的情况下运行代码。目前,我只是得到一个空对话框,而不是我的php代码从数据库中删除一行

ajax部分

<?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)将其记录到控制台而不是
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';

?>