-2

フォームでいっぱいの簡単なテスト ページに取り組んでいます。あなたが数日前に投稿したように、私は jquery を使用して ajax を使用し、送信ボタンの 1 つが押されたらページを更新しないようにしています。ここで見つけたテンプレートに従ってください:http://jquery.malsup.com/form/

私は自分のウェブページにこのコードを追加しました:

<script> 
    $(document).ready(function() { 
        // bind 'myForm' and provide a simple callback function 
        $('#myForm').ajaxForm(function() { 
            alert("Thank you for your comment!"); 
        }); 
    }); 
</script> 

私が経験したことは、フォームが完全に機能するようになりましたが、ajax setTimeout 関数が機能しなくなったことです! 前のコードを削除すると、ajax setTimeout が再び機能します。なぜそれが好きなのか、手がかりはありますか?

<script type="text/javascript">

    function myff(abc)
    {

        var
            $http,
            $self = arguments.callee;

        if (window.XMLHttpRequest) {
            $http = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            try {
                $http = new ActiveXObject('Msxml2.XMLHTTP');
            } catch(e) {
                $http = new ActiveXObject('Microsoft.XMLHTTP');
            }
        }

        if ($http) {
            $http.onreadystatechange = function()
            {
                if (/4|^complete$/.test($http.readyState)) {
                    document.getElementById('ReloadThis3').innerHTML = $http.responseText;
                    setTimeout(function(){$self(abc);}, 1000);
                }
            };
            $http.open('GET', 'loadfunc.php' + '?abc=' + abc);
            $http.send(null);
        }
    }

</script>

新しいコード:

<script>   
        $(document).ready(function() {


        $('#s1hvform1').ajaxForm(function() {
        });

      sendreq(abc);
});

function sendreq(abc)
{
    $.get('loadfu.php?abc='+abc,function(r)
    {          
        $('#ReloadThis2').html(r);
        setTimeout(function(){sendreq(abc);},1000);        });
}           

</script>


<div id="ReloadThis2">Loading data...</div>
4

1 に答える 1

1

setTimeout() は ajax 関数ではなく、文字列の形式で関数ハンドルを渡す必要があることは確かです。また、最初のコード ブロックにいるのに、なぜこれに jquery を使用しないのですか?

function sendRequest(abc)
{
    $.get('loadfunc.php?abc='+abc,function(r)
    {
        $('#ReloadThis3').html(r);
        setTimeout(function(){sendRequest(abc);},1000);
    });
}
于 2012-04-07T18:21:33.540 に答える