3

削除ボタンをクリックすると、php側の処理が変更されるのに、クライアント側に戻ってもテーブルから行が削除されない理由を理解しようとしています。テーブルにデータテーブルを使用しています。

$('.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!"}

編集 :

これが私が現在使用しているものであり、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');
});
4

2 に答える 2

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 がデータを変更していると仮定すると、そのデータはもうセットに含まれていないため、次のロードには含まれません。

于 2012-04-25T23:23:56.207 に答える
0

ここで提供されているコードには複数の問題があります...
1. POST 要求に対して取得している応答を調べます。
「Success」プロパティの「YES」値を取得していますが、これifは JavaScript では考えられませんtrue
2.fnGetSelectedデータテーブルの関数には、動作するインスタンスが必要です..関数をグローバルなものであるかのように呼び出すことはできません..したがって、変数に格納されたテーブル参照を持っている 場合は、おそらくそうする必要があるので、dTableそれを呼び出すことができますdTable.fnGetSelected()
これを変える

var anSelected = fnGetSelected( oTable );

これに

var anSelected = oTable.fnGetSelected();


oTableにデータテーブルがあると仮定して、
f12を押して開発者ツールをデバッグして開き、コンソールまたはブラウザに応じてどこでもjavascriptエラーを探します

于 2012-04-25T23:02:18.807 に答える