0

私が取り組んでいる小さな個人的な webapp があります。クリックすると、データベースからその情報を削除することになっているphpへのajax呼び出しを行うことになっているリンクがあります。なんらかの理由で、実際にはデータベースから行を削除しません。知っていることはすべて試しましたが、まだ何もありません。それは信じられないほど簡単なことだと確信しています...関連するスクリプトは次のとおりです。

データベース出力:

 $sql = "SELECT * FROM bookmark_app";
    foreach ($dbh->query($sql) as $row)
 {
 echo '<div class="box" id="',$row['id'],'"><img src="images/avatar.jpg" width="75" height="75" border="0" class="avatar"/>
     <div class="text"><a href="',$row['url'],'">',$row['title'],'</a><br/>
     </div>
            /*** Click to delete ***/
     <a href="?delete=',$row['id'],'" class="delete">x</a></div>
  <div class="clear"></div>';
        }

    $dbh = null;

Ajax スクリプト:

$(document).ready(function() {
$("a.delete").click(function(){

 var element = $(this);

 var noteid = element.attr("id");

 var info = 'id=' + noteid;

  $.ajax({
    type: "GET",
    url: "includes/delete.php",
    data: info,
    success: function(){
    element.parent().eq(0).fadeOut("slow");
    }
  });
 return false;
 });
});

コードを削除:

include('connect.php');

//delete.php?id=IdOfPost
if($_GET['id']){

$id = $_GET['id'];

//Delete the record of the post
$delete = mysql_query("DELETE FROM `db` WHERE `id` = '$id'");

//Redirect the user
header("Location:xxxx.php");

}
4

2 に答える 2

3

ああ、エラーを見つけました。生成しているhrefで、id属性を設定していません。次のようになります。

<a href="..." id="'. $row['id'] . '" class="delete">x</a>

もちろん、これは単なる直接の例です。これらの種類のものをエスケープする必要がありますが、これにより、jQueryのアイテムにアクセスできるようになります。

于 2010-05-28T13:07:46.150 に答える
0

DB クエリの後にリダイレクトするだけでなく、削除スクリプトを変更することもできます。AJAX 経由で呼び出されるため、少なくとも成功/エラー コードを JavaScript に返す必要があります。

// can't return $delete unconditionally, since *_query() returns an object
if ($delete) { 
   return(json_encode(array('code' => 1, 'msg' => 'Delete succeeded')));
} else {
   return(json_encode(array('code' => 0, 'msg' => 'Delete failed: ' . mysql_error()));
}

データベース呼び出しが成功したと仮定するのは悪い習慣です。

于 2010-05-28T18:38:52.817 に答える