0

次のコードを使用して定期的な AJAX 呼び出しを行う jQuery スクリプトを実行しています。

var a = moment();
var dayOfMonth = a.format("MMM Do");
var timeSubmitted = a.format("h:mm a");
var count_cases = -1;
var count_claimed = -1;

setInterval(function(){
    //check if new lead was added to the db
    $.ajax({
        type : "POST",
        url : "inc/new_lead_alerts_process.php",
        dataType: 'json',
        cache: false,
        success : function(response){

            $.getJSON("inc/new_lead_alerts_process.php", function(data) {

                if (count_cases != -1 && count_cases != data.count) {
                    window.location = "new_lead_alerts.php?id="+data.id;
                }
            count_cases = data.count;
            });
        }
    });

これは、各呼び出しで実行される PHP です。

$count = mysql_fetch_array(mysql_query("SELECT count(*) as count FROM leads"));
$client_id = mysql_fetch_array(mysql_query("SELECT id, client_id FROM leads ORDER BY id DESC LIMIT 1"));

echo json_encode(array("count" => $count['count'], "id" => $client_id['id'], "client_id" => $client_id['client_id']));

既存のエントリが削除されたときではなく、新しいエントリがデータベースに追加されたときにのみアラートがトリガーされるように、コードを変更する必要があります。現状では、アラートは両方のイベントで発生します。

どんな助けでも大歓迎です。

4

2 に答える 2

0

どうですか

var newest_id = 0;

window.setInterval(function() {
  $.ajax({
    ...
    success : function(data) {
      if (newest_id && data.id > newest_id)
         window.location = ...
      newest_id = data.id;
    }
  })
}, intervalTime);

再度電話する必要はありません$.getJSON()。のショートカットです$.ajax()

于 2012-10-25T19:44:21.973 に答える
0

解決策は非常に簡単でした。に変更count_cases != data.countしましたcount_cases < data.count。それだけでした。

于 2012-10-26T04:57:10.013 に答える