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}";
}

次の 2 つのいずれかを出力します:{"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

ajax へのリターンとして、php コードで $rmd をエコーアウトしてみてください。

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 に答える