-2

我正在处理充满表单的简单测试页面。正如你们中的一个人几天前发布的那样,我现在使用 jquery 来使用 ajax 并避免在按下提交按钮之一后刷新页面。所以只要按照我在这里找到的模板: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 回答