0

私は、サーバー側のスクリプトを許可しない Web サイト プラットフォームで作業しているため、jquery と javascript だけで十分です。10 秒ごとに受信トレイ メッセージ数を含む div を更新するサイトで動作するスクリプトを作成しようとしています。div を 10 秒ごとに更新することに成功しましたが、問題はページ ビューのカウントにあります。私のスクリプトはページ全体を更新し、ページ ビューをカウントしていますが、1 つの div だけを更新したいだけです。私のスクリプトが引き起こす問題の例は、ページ ビュー カウンター (フォーラムの投稿、ブログの投稿など) を持つサイトで何かを表示すると、スクリプトが更新されたためにページ ビューが狂ってしまうことです。私はJavascriptにかなり慣れていないので、これを回避する方法があるかどうかは完全にはわかりません.

私が取り組んでいるのは以下のとおりです。

    <div id="msgalert" style="display: none"; "width: 100px !important">
<a href=""> You have $inbox_msg_count new messages.</a>
</div>

$inbox_msg_countは、メッセージ数を取得する呼び出しであり、サイトが存在するプラットフォームによって提供されます。使用すると、メッセージ数が自動的に表示されます。

次に、すべての作業を行うスクリプトは次のとおりです。

    <script>
 setInterval(function(facepop){
  var x= document.getElementById("SUI-WelcomeLine-InboxNum");
var z = x.innerText;
 if(x.textContent.length > 0)
$("#msgalert").show('slow');
}, 1000);
facepop();
</script>
<script>
setInterval(function() {  
$("#msgalert").load(location.href+" #msgalert>*","");  
}, 1000); // seconds to wait, miliseconds
</script>

私はおそらくこれを説明する最善の仕事をしていないことを認識していますが、それは私自身がかなり混乱しているためです. 前に述べたように、このコードは希望どおりに機能しますが、ページ全体を更新してページ ビューを増やしたくはありません。どんな助けでも大歓迎です。

4

3 に答える 3

0

iframeを調べて、コンテンツ (div) を更新/更新する方法として使用することをお勧めします。最初に iframe をセットアップして ID を指定し、次に JS を使用してオブジェクトを取得し、refresh を呼び出します。

于 2012-10-30T05:04:59.980 に答える
0

あなたの問題は少し違うようですので、div内からaを送信すると役立つと思います...

$(document).ready(function() 
{
            // bind 'myForm' and provide a simple callback function
               $("#tempForm").ajaxForm({
               url:'../member/uploadTempImage',//serverURL
               type:'post',
               beforeSend:function()
               {
                   alert(" if any operation needed before the ajax call like setting the value or retrieving data from the div ");
               },
               success:function(e){
                alert("this is the response data simply set it inside the div ");
               }
        });
        });
于 2012-10-30T05:53:17.450 に答える
0

これはおそらくフォームなしで、そして間違いなくiframeなしで実行できると思います(身震い)..

たぶん、このようなものですか?

$(document).ready(function()
{
  setInterval(function(facepop)
     {
        var x= document.getElementById("SUI-WelcomeLine-InboxNum");
        var z = x.innerText;

        if(x.textContent.length > 0)
           $("#msgalert").show('slow');

        $.ajax({
            type: "POST",
            url: location.href,
            success: function(msg)
             {
                $("#msgalert").html(msg);
             }
        });

     },1000);

あなたが何をしようとしているのか正確には完全には明らかではありません (または、私が非常に疲れているだけかもしれません (真夜中です...)) が、上記の $.ajax() 呼び出しが主なものです提案します。

両方の関数を 1 つの setInterval() にカプセル化すると、読みやすくなり、msgalert要素を表示してから「再読み込み」するまでの 1 秒のギャップが解消されます。

于 2014-09-20T15:01:37.837 に答える