2012-04-25 14 views
3

私が削除ボタンをクリックしたときに変更がPHP側で行われる理由を理解しようとしていますが、クライアント側に戻っても行が削除されません。テーブル。私は自分のテーブルにdatatablesを使用しています。jQueryデータテーブルのプラグインでテーブル行が削除されない

$('.delete').click(function() { 
    var titleID = $(this).attr('rel'); 
    $.post('titles/delete', { titleID:titleID }, function(data) { 
     if (data.success) 
     { 
      var anSelected = fnGetSelected(oTable); 
      oTable.fnDeleteRow(anSelected[0]); 
     } 
    }); 
}); 

PHP側からの応答がこれです:

{"success":"Yes","message":"Title was deleted successfully!"} 

EDIT:

ここで私が今使っていると私はfnGetSelectedを言う興味深いのエラーメッセージを取得してんですよ定義されていません。だから、私は "メートルにもテーブルの行を削除するには、適切にこれを行うかはわからない。

$('.delete').click(function() { 
var titleID = $(this).attr('rel'); 
$.post('titles/delete', { titleID:titleID }, function(data) { 
    if (data.success) 
    { 
     var anSelected = fnGetSelected(oTable); 
     oTable.fnDeleteRow(anSelected[0]); 
    } 
}, 'json'); 
}); 
+1

'if()'ステートメント内の行はjQuery afaict - これらの関数定義を提供することができますか? JSコンソールでエラーが発生していないことを確認しましたか? – halfer

+0

'if'ブロックに入っていることは確かですか? – Marc

+0

1. if(data.success){INSIDE}の内部が確実に呼び出されていますか? 2. anSelectedが持っている値を確認しましたか?期待通りの配列ですか? –

答えて

2

oTableは、データテーブル機能内で見つかったオブジェクトであり、そこに定義されています。関数がそのコースを走らせて何らかのレンダリングをすると、その変数はどのような種類のグローバル変数でもなく破壊されます。

$('.delete').click(function() { 
    var titleID = $(this).attr('rel'); 
    $.post('titles/delete', { titleID:titleID }, function(data) { 
     if (data.success) 
     { 
      var anSelected = fnGetSelected(oTable); 
      oTable.fnDeleteRow(anSelected[0]); 
     } 
    }); 
}); 

あなたがデータを指定し、戻ってくる$ .postとデータを扱うとあなたが戻って欲しいと入力することを期待することは良い考えである場合

$('.delete').click(function() { 
    var titleID = $(this).attr('rel'); 
    $.post('titles/delete', { titleID:titleID }, function(data) { 
     if (data.success) 
     { 
      var anSelected = fnGetSelected(oTable); 
      oTable.fnDeleteRow(anSelected[0]); 
     } 
    }, 'json'); 
}); 

も言及する価値がかなりありますレンダリング後にデータテーブルオブジェクトを処理しようとするよりも、あなたの "削除"ボタンがどこにあるかに応じて最も簡単なルートは

$(this).parent('tr').remove(); 

ボタン/リンクが何であっても、削除する行と同じ行にあると仮定します。これは、問題の表の行を削除する視覚効果のためのものです。また、あなたのajaxが次にページをロードして、それがセットにないので、次のロードに含まれないようにすると仮定します。

0

uはここで提供肝炎コードで複数の問題がある...
1.going応答によって、あなたはPOSTリクエストのために取得している。
はあなたが私はJavaScriptでiftrueとしてかかるだろうと思ういけない「​​成功」プロパティの「YES」の値を取得している。
はのDataTableの機能が時に動作するようにインスタンスを必要とします..あなたをそれはグローバルなものであるかのように関数を呼び出すことはできません..もしあなたがdTableのようなvaribaleに格納されているテーブルの参照は、 dTable.fnGetSelected()
としてリットルそれはそうprobabalyあなたはoTableが持っていると仮定して、この

var anSelected = fnGetSelected(oTable); 

この

var anSelected = oTable.fnGetSelected(); 


イムに変更する必要があり、あなたのDataTable
ので、デバッグにF12キーを押すことによって、開発者向けツールを開きますコンソールやブラウザに応じてjavascriptエラーを探します

+0

JavaScriptは '' Yes ''、または空でない文字列を' 'true' 'と解釈します。 –

+0

k私の間違いmaybは2番目の点を確認してください –

+0

私の更新ポストをチェックしてください。 –

関連する問題