2012-05-09 7 views
2

jqueryでphpファイルを呼び出してデータベースで何らかの操作を実行するとajax関数がありますが、結果は異なる場合があります。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); 
} 
?> 

は、どのように$になるようRMD $を返すために:それは

を成功したかどうか、私は私がこれを持って出力に異なるメッセージをしたいです。アヤックス、私は正しいメッセージを警告することができますか?

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

答えて

4

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); 
     } 
    }); 
} 
+0

ありがとうございます – user1385745

3

私JSONを使用するためのアドバイスやありがとう)

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

      console.log(rmd); 
     } 
    }); 

あなたはそれに応じた応答に基づいて行動することができます

0

だけで(あなたのAJAX応答ブロックにconsole.log(rmd)を試してみてください、あなたのAjaxのファイルにRMD $をエコーし​​ようとした後、コンソールを見て:

は、あなたの答えを

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

success: function(rmd)であなたの "RMDは" callabckを受けるべきです。

1

何かを送り返すにはPHPファイルが必要です。応答に基づいて動作するには、元のページでajax呼び出しが必要です。

PHP:私たちはjsBin

に、このリターンをシミュレートすることができ{"rmd": 0}または{"rmd": 1}

その後、値を取得し、ベースの何かをするjqueryのを使用します。出力の2つのいずれかがします

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

コールバックの応答:

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

View the code、次にwatch it run。 ここでデータを送信しなかっただけで、私のサンプルページは常に同じ応答を返します。

関連する問題