0

私は現在、HTMLで集計されたレコードに取り組んでいます。レコードはデータベースからのもので、そのテーブルの最後の部分に、いくつかのアクションがあります.EDIT DELETE SHOW、すでに編集を行っていますが、これは同じではありません私のDELETE、私のDELETEアクションはajaxを使用して行われますが、問題は、データベースからIDを含む各ボタンの値を適切に取得できないことです。

これは、削除ボタンが配置されているテーブルの一部です。

 <td width="61"><button id="delete" value="<?php echo "$arr[0]"; ?>">Delete</button></td>

これらはjQueryの部分です

$("#delete").click(function(){
    alert($("#delete").val()); <-- CAN"T GET THE CORRECT ID
    //AJAX PART HERE
})

問題は、押したボタンの値を正しく取得できないことです。これを行うにはどうすればよいですか。提案があれば大歓迎です..

これがテーブルの全体図です。

ここに画像の説明を入力

4

6 に答える 6

6

テストされていませんが、問題は、おそらくすべての削除ボタンであるval()のすべての一致を取得しようとしていることにある#deleteと思います (生成された HTML を見ないとわかりません)。

HTML 仕様によれば、 は一意の要素を参照する必要があるため、実際には のクラスを使用し、ではなくdeleteselect を選択する必要があります。.deleteidid

$("#delete").click(function(){
    // note the use of `this` to refer to clicked object, rather than all delete buttons
    alert($(this).val());
    //AJAX PART HERE
})
于 2012-10-19T11:39:55.880 に答える
0

ボタンの値はテキストとして表示されるものですが、テーブルのIDは取得されません。また、削除ボタンがいくつかあるため、IDの代わりにクラスを使用してください。

「db-id」と呼ばれるカスタム属性を使用して、htmlコードを次のようなものに変更します。これにより、削除するレコードを見つけることができます。

<input class="delete" db-id="<?=$db-id?>" value="Delete"/>

次に、jsコードを次のように調整できます。

$(".delete").click(function(){
    var dbid = $(this).attr('db-id');
    $.ajax({
        type: 'POST',
        url: 'script-url/here.php'
        data: 'id=' + dbid,
        success: function(feedback){
            if(success==true) $('tr[db-id="' + dbid + '"]').delete
        }
    }).error(){
        alert('Something went horribly wrong!');
    };
})

成功関数では、を使用してデータのある行を非表示にすることもできます。.delete()

また、悪意のあるユーザーはブラウザでボタンのdb-idを編集できるため、phpスクリプトで必要なすべての予防措置と検証を行ってください。

于 2012-10-19T11:47:49.857 に答える
0

わかりましたここにあなたの解決策があります:

1)id="delete"使用クラスを挿入します。このような:

<td width="61"><button class="delete" value="<?php echo "$arr[0]"; ?>">Delete</button></td>

2)jqueryは次のようになります。

$(".delete").click(function(){
    alert($(this).val()); <-- CAN"T GET THE CORRECT ID
    //AJAX PART HERE
})

これは適切なIDを警告するはずです、私は編集のためにこれを提案し、actioを表示します...。

于 2012-10-19T11:53:13.973 に答える
0

まず、サーバー側で delete.php のように削除メソッドを記述し、'error' や 'success' などのステータスを返します。

$("#delete").click(function(){
    var id = $(this).attr('id');
    //AJAX PART HERE
    $.get('delete.php?id=xxx',function(status){
        if (status == 'success') $(this).parent().remove();
    }
})
于 2012-10-19T11:41:18.133 に答える
0

これを試して:

  $("button[id=delete]").click(function(){  
      $(this).closest('tr').remove(); // Delete row
      alert($(this).attr('value'));  // ID
  });  

button[id=delete] - 同じ ID を持つボタンが多数あるため、CSS クラスを使用する方が適切です...

于 2012-10-19T11:51:00.793 に答える
0

関数内のボタンにアクセスするには、jQueryの「this」を使用するだけです...

例えば

交換

alert($("#delete").val()); <-- CAN"T GET THE CORRECT ID

alert($(this).val());
于 2012-10-19T11:45:22.080 に答える