jquery ajax表单+ ajax setTimeout不起作用

时间:2012-04-07 18:13:36

标签: jquery ajax forms settimeout

我正在处理充满表格的简单测试页面。正如你几天前发布的那样,我现在使用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>

1 个答案:

答案 0 :(得分:1)

setTimeout()不是一个ajax函数,它必须以字符串的形式传递一个函数句柄我相当肯定。另外,为什么你没有使用jquery,看到你在第一个代码块?

function sendRequest(abc)
{
    $.get('loadfunc.php?abc='+abc,function(r)
    {
        $('#ReloadThis3').html(r);
        setTimeout(function(){sendRequest(abc);},1000);
    });
}