1

私はこのコードを使用して行を削除しています..私のコードは正常に動作しています.すべての行の前に削除ボタンがあるデータテーブルを使用しています..私が望むのは、確認ダイアログが表示され、ユーザーが[OK]を押したときです行を削除し、更新せずに残りの行をデータブルに表示します..その時点で[OK]ボタンを押すと、行が正常に削除されます..しかし、ページを更新するまで削除行はテーブルに残ります。テーブルから削除します..それは可能ですか?..削除を押した後、行が削除されているかどうかを確認するために更新する必要があることをユーザーに望まないため..

これは私のビューコードのユーザー名です

         <td> <a href = "employesController/deleteEmploye/<?php echo  $row->emp_id ?>" 
             class = "deletes" >Delete</td>

私のjqueryコード

 <script type='text/javascript'>
  $(document).ready(function(){
$(".deletes").click(function(e){
  var r =  confirm("are you sure you want to delete this");

   if (r==true){
    $this  = $(this);
    e.preventDefault();
    var url = $(this).attr("href");
    $.get(url, function(r){
        if(r.success){
            $this.closest("tr").remove();
        }
    })
   }else {
        return false;
       }

    });
     });

私のコントローラー

 function deleteEmploye($empid){

     $id = $empid;
    $this->load->model('employesModel');
    $query = $this->employesModel->deleteEmploye($id);
    return json_encode(array("success" => true));

モデル

  public function deleteEmploye($id){

         $this->db->where('emp_id', $id);
        $query = $this->db->delete('employees');

        return $query->result();


 }
4

3 に答える 3

1

最初に、if 条件ブロックが呼び出されていることを確認する必要があります。適切に呼び出された場合は、次を試してください。

$this.parent('td').parent('tr').remove();
于 2013-01-19T08:18:35.133 に答える
1

Firebug (または、firefox を使用していない場合は同様のツール) を使用して、ajax 呼び出しをデバッグします。「ネットワーク」タブでは、ajaxrequest が実際に送信されたかどうか、およびそれが何を返すかを確認できます。

コードに console.log および console.dir ステートメントを追加して、何が起こるかを調べます。

$.get(url, function(r){
    console.log("returned form ajax");
    if(r.success){
        console.log("successful, $this is now ");
        console.dir($this);
        $this.closest("tr").remove();
    }
}

このようにして、あなたの ajax は返されるが、期待した結果ではないことがわかります: データを返すだけなので、r.success の検索は常に失敗します。

使用しているメソッド .get は、URL と、成功した場合にのみ呼び出される関数の 2 つの引数しか取りません。したがって、if ステートメントはまったく必要ありません。

$.get(url, function(r){
  $this.closest("tr").remove();
}

完全に機能する例については、 http://jsfiddle.net/bjelline/8RQQN/を参照してください。


また、getを使用してものを削除しないでください。代わりに投稿を使用してください。また、クロスサイト リクエスト フォージェリについても考慮する必要があります。まったく別のサイトの誰かがリンクを追加する可能性があります。

<a href="http://yoursite.com/employesController/deleteEmploye/4">free beer here</a>

ユーザーをだまして従業員を削除させる - 気付かないうちに!

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheetを参照してください

于 2013-01-19T08:19:46.507 に答える
0

jquery を使用して、この行を削除する php の別のスクリプトに送信できます。確認したら、テーブルのこの行を削除できます。

jquery

$.post("functions.php", { rowId: 1231 },
    function(data) {
        if (data == "ok")
            alert("the row has ben delete");
        else
            alert("the row is not delete");

});

php

<?php
    function delete_row(){
        //action to delete row in db
        // when the row has bes delete you can print ok
        echo 'ok';
        //if you have a error  you can print a message that you can managed y jquery
        echo "error 2121123"
    }
    if(isset($_post["rowId"]))
        delete_row($_post["rowId"]);        
于 2013-01-19T08:16:13.870 に答える