2012-01-05 4 views
2

私はポスティングシステムのようなFacebookを作成しています..現在、私はデータベースから投稿を削除する問題を抱えています。ajax関数は私のPHPページに値を渡すようではありません

これはjavascriptのコードです:

 $('#delete_post').live("click",function() 
     { 
       var ID = $(this).attr("class"); 
       //alert(ID); 
       var parent = $(this).parent(); 

       if(confirm("Are you sure to delete this Comment?")) 
     { 
        $(".bar"+ID).slideUp('slow', function() {$(this).remove();}); 

        $.ajax({ 
          type: "POST", 
       url: "post_delete.php", 
       data: "msg_id="+ID, 
          success: function(html){ 
          $('#'+ID).remove(); 
          //$(this).html('<meta http-equiv=\"Refresh\" content=\"1; URL=insert.php\">'); 
          }}); 
     } 

これはポストを削除するための私のPHPコードです:

 <?php 
     $msg_id= $_REQUEST['msg_id']; 
     $msg_id= $_POST['msg_id']; 

     echo $msg_id; 

     @ $db = new mysqli('localhost', 'root', '', 'wall'); 

          if(mysqli_connect_errno()) 
         { 
       echo "Error! Could not connect to database. Reset fields."; 
       exit; 
       } 

    $sql = "DELETE * FROM messages WHERE msg_id='$msg_id'"; 
    $result = $db->query($sql); 

    $db->close(); 
     } 
     ?> 

私は経由で投稿を削除することができませんでした理由を私は理解していませんAjax関数..私はそれがIDを得ることができると確信していますが、私はそれがPHPページを呼び出すことはできないと思う。 私のコードに何か問題がありますか?

+0

javascriptデバッガとは何ですか?リクエストが送信されましたか?あなたのPHPにいくつかのデバッグを含めてどうですか?正しい値が送受信されましたか? – ManseUK

+0

クラスを取得することはおそらくこれを行う最良の方法ではありません - 各エントリに固有のIDがあり、それを使ってサーバーと通信することをお勧めします - クラスは多くのDOM要素によって共有されることを意図しています – ManseUK

+0

また、 idで要素に '.live()'をバインドすると、削除ボタンが一つもないと思います。 – devdRew

答えて

1

用途:

data: { 'msg_id' : ID } 

単なる文字列その後、より良く、より簡単です。

id(delete_post)のような要素の数が少ない場合は、id $('#delete_post')で要素のハンドラーをバインドすると、別の問題が発生する可能性があります。

+0

[ajax()のドキュメント](http://api.jquery.com/jQuery.ajax/#sending-data-to-server)は、あなたがどちらを使うことができると言っています... how/whyは "より良い" ? – ManseUK

+0

可読性のため、事前構築のため、修正のために。好きなものを選んでください... '' '1 ':' some '、' v2 ':' some2 '} '' v1 =' + some1 + '&v2 =' + some2'。 – devdRew

+0

私はあなたに同意します...ちょうどそのOPの問題を解決するために行くつもりかと思った。 – ManseUK

1
  1. あなたのSQL DELETE構文チェック:あなたはIDとクラスの使用を混同しましhttp://dev.mysql.com/doc/refman/4.1/en/delete.html
  2. - 複数の「投稿を削除」ボタンのような(IDSは、(郵便番号など)一意である必要があり、クラスがなくてもよいが)
  3. ID変数は$ .ajax成功ハンドラで範囲外である可能性が最も高いため、DBから正常に削除されても投稿はDOMから削除されません。
+0

IDスコープは問題ありません。 – devdRew

+0

はい、それは間違っているMySQLの削除です。 削除から削除する必要があります*から – Julian

+0

はい、私はgflshが私に言った1時間前に得た..ありがとう.. – suffocationkills

関連する問題