3

我在 jquery 中有一个 ajax 函数调用一个 php 文件来对我的数据库执行一些操作,但结果可能会有所不同。无论成功与否,我都想输出不同的消息

我有这个 :

echo '<button id="remove_dir" onclick="removed('.$dir_id.')">remove directory</button>';

<script type="text/javascript">
    function removed(did){
        $.ajax({ 
            type: "POST", 
            url: "rmdir.php", 
            data: {dir_id: did},
            success: function(rmd){ 
                if(rmd==0)
                    alert("deleted");
                else
                    alert("not empty");
                window.location.reload(true);
            } 
        }); 
    }
</script>

还有这个

   <?php
require('bdd_connect.php');
require('functions/file_operation.php');
if(isset($_POST['dir_id'])){
    $rmd=remove_dir($_POST['dir_id'],$bdd);
}
?>

我的问题是,如何在 $.ajax 中返回 $rmd,我可以提醒正确的消息?

谢谢您的回答

4

5 回答 5

5

PHP

<?php
   require('bdd_connect.php');
   require('functions/file_operation.php');
   if (isset($_POST['dir_id'])){
      $rmd=remove_dir($dir_id,$bdd); 
      echo $rmd;
   }
?>

JS

function removed(did){
    $.ajax({ 
        type: "POST", 
        url: "rmdir.php", 
        data: {dir_id: did}
    }).done(function(rmd) {
         if (rmd===0) {
            alert("deleted");
         }else{
            alert("not empty");
            window.location.reload(true);  
         }
    });
}
于 2012-05-09T22:21:14.360 回答
3

我建议使用 json 或:

if(isset($_POST['dir_id'])){
    $rmd=remove_dir($dir_id,$bdd);  
    echo $rmd;
}
于 2012-05-09T22:19:30.253 回答
1

您需要您的 php 文件发送回一些东西,然后您需要原始页面上的 ajax 调用根据响应来运行。

php:

if(isset($_POST['dir_id'])){
    $rmd=remove_dir($dir_id,$bdd);  
    echo "{'rmd':$rmd}";
}

这将输出以下两件事之一:{"rmd": 0}{"rmd": 1}

我们可以在jsBin上模拟这个返回

然后使用 jquery 获取值并根据我们回调中的响应做一些事情:

$.ajax({ 
    type: "POST",
    dataType: 'json',
    url: "http://jsbin.com/iwokag/3",
    success: function(data){ 
        alert('rmd = ' + data.rmd)
    } 
});

查看代码,然后观察它的运行。只是我没有在这里发送任何数据,我的示例页面总是返回相同的响应。

于 2012-05-09T22:36:08.653 回答
0

只需尝试在您的 ajax 文件中回显 $rmd,然后查看控制台(尝试console.log(rmd)在您的 ajax 响应块中)

$.ajax({ 
        type: "POST", 
        url: "rmdir.php", 
        data: {dir_id: did},
        success: function(rmd){ 

            console.log(rmd);
        } 
    }); 

然后,您可以根据响应采取相应的行动

于 2012-05-09T22:19:38.030 回答
0

尝试在 php 代码中回显 $rmd,作为对 ajax 的返回。

if(isset($_POST['dir_id'])){
    $rmd=remove_dir($dir_id,$bdd);  
    //if $rmd = 1 alert('directory not empty');
    //if $rmd = 0 alert('directory deleted');
    echo $rmd;
}

你的“rmd”success: function(rmd)应该收到callabck。

于 2012-05-09T22:24:18.317 回答