私はサーバ側のデータによってロード可能なデータテーブルを持っています。今、AWS SQSからのリスニング通知によってデータ行を更新したいとき、新しい行データを取得してテーブルAPIに追加してから「描画」メソッドを呼び出すと、APIがサーバー側からAjaxリフレッシュをトリガーします(表サーバーの処理でセットアップされました)。データテーブルに対する一時的なサーバの処理を無効にする
一時的にajaxコールを「無効にする」方法がありますか?なぜなら、私はいつも無効にしたくないから、サーバー側でページ番号と検索を処理したいだけで、サーバーを呼び出さずに新しい行を追加したいだけです。
私はこれ試してみてください。
var table = $('#tblModel').DataTable(); // Get the API object
// Initialize the Amazon Cognito credentials provider
AWS.config.region = 'us-west-2'; // Region
/**
* Gets the user's Identity
*/
$.getJSON("/cognito", function(data) {
if (data) {
IdentityId = data.IdentityId;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId,
IdentityId: data.IdentityId,
Logins: {
"cognito-identity.amazonaws.com": data.Token
}
});
var queue = new AWS.SQS({params: {QueueUrl: QueueUrl, WaitTimeSeconds: 20}}); // using url to queue
getMessages(queue);
}
});
/**
* Gets the message from SQS
*/
function getMessages(queue) {
queue.receiveMessage(function (err, data) {
if (data) {
if (data.Messages.length == 0) return;
try {
// here add a row or rows, but it trigger a call to refresh data from server side instead.
if (data.Messages.length > 1)
table.rows.add(data.Messages.map(transformMessage)).draw();
else
table.row.add(transformMessage(data.Messages[0])).draw();
// now delete the messages
queue.deleteMessageBatch({
QueueUrl: QueueUrl,
Entries: data.Messages.map(function(Message) {
return {
Id: Message.MessageId,
ReceiptHandle: Message.ReceiptHandle
};
})
}, function(err, data) {
if (err) console.error(err);
});
getMessages(queue);
} catch (e) {
console.error(e);
}
}
});
}
あなたはajaxを実行する必要があるかどうかを格納する 'boolean'変数を使用できませんか?次に、ajaxをオンまたはオフにしたいときに 'boolean'を設定し、ajaxを実行する関数で' boolean'をチェックします。 DataTableにAjaxの機能は、設定にアクティベートされているので、私は、そうthikません答えIMHO –
@KevinWorkman:。 $( '#のtblModelを')のdataTable({ AJAX:「/パス/ to/data "、 .... }); データを取得するには、このようにページをレンダリングする必要があります。だから私は思うのは簡単ではない –
@KevinWorkmanであるように思わ –