1

Coldfusion 11 で実行しています。30 秒ごとにページを更新して新しい IM を取得するメタ更新を使用するインスタント メッセンジャーがあります。これに関する問題は、ページのリロードのフラッシュであり、15 秒ごとに更新することを本当に望んでいます。目に見えないメッセージがないかどうかを確認するために、変更してループを実行することにしました。ある場合は、ページをリロードします。そうでない場合は、ループを続行する前に 15 秒間スリープさせます。ご覧のとおり、40回設定しました。15 秒間隔では、10 分でタイムアウトします。ユーザーがその時点で新しいメッセージを投稿したり、ページを変更したりしていない場合、ログアウトしたと見なされます。以下のコードはページの最後にあります。私が抱えている問題は、cloop が完了するまでメッセージが表示されないことです。

<cfloop from="1" to="40" index="i">
<cfset sleep(15000)> 
<cfquery name="messck" datasource="mysource" maxrows="1">
SELECT id
FROM messages
WHERE user = '#getuser.code#' AND friend = '#getme.code#' AND seendate IS NULL
ORDER BY ID DESC
</cfquery>
<cfif messck.recordcount EQ 0>
<cfelse>
<cflocation url="messagebox.cfm?code=#url.code#">
</cfif>
</cfloop>

ありがとう、マイク

4

2 に答える 2

0

Ajax関数を使用したJQueryを使用することにしましたが、問題は完全に解決されました。メッセージを表示するページへのスクリプト リンク、messages.cfm をいくつか含めました。

<script language="javascript" src="http://equifax.ipushjobs.com/jquery/jquery-1.2.6.min.js"></script>
<script language="javascript" src="http://equifax.ipushjobs.com/jquery/jquery.timers-1.0.0.js"></script>

次に、このスクリプトを追加しました。

<script language="javascript">
$(document).ready(function(){
  var j = jQuery.noConflict();
j(document).ready(function()
{
    j(".refreshMe").everyTime(5000,function(i){
        j.ajax({
          url: "messck.cfm?code=#getuser.code#",
          cache: false,
          success: function(html){
            j(".refreshMe").html(html);
          }
        })
    })
});
  j('.refreshMe').css({color:"red"});
});
</script>

次に、ページの最後に空の div を配置しました。

<div class="refreshMe"></div>

これは私のmessck.cfmです。ユーザーからの新しいメッセージをチェックします。新しいメッセージがある場合、ページが更新されます。

<cfquery name="ckfornew" datasource="mysource">
SELECT code
FROM messages
WHERE code = '#url.code#' AND friend = '#session.code#' AND seendate IS NULL
ORDER BY ID DESC
</cfquery>
<cfif ckfornew.recordcount EQ 0>
<cfelse>
<cfoutput>
<meta http-equiv=Refresh content="0;url=messages.cfm?code=#ckfornew.code#">
</cfoutput>
</cfif>

入力と指示に感謝します!

于 2014-05-15T15:21:10.590 に答える