Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果它有效的话,作为一个答案。我能让它在中止时不说中止吗?这是最好的答案,这是你工作时的错误警报。中止将触发错误回调。只要在那里检查是中止还是真正的错误,只提醒真正的错误。好的。这很有效。还有一个问题。如果在该页面上一次调用超过1个超时ajax函数,它将停_Javascript_Php_Jquery_Ajax_Settimeout - Fatal编程技术网

Javascript 如果它有效的话,作为一个答案。我能让它在中止时不说中止吗?这是最好的答案,这是你工作时的错误警报。中止将触发错误回调。只要在那里检查是中止还是真正的错误,只提醒真正的错误。好的。这很有效。还有一个问题。如果在该页面上一次调用超过1个超时ajax函数,它将停

Javascript 如果它有效的话,作为一个答案。我能让它在中止时不说中止吗?这是最好的答案,这是你工作时的错误警报。中止将触发错误回调。只要在那里检查是中止还是真正的错误,只提醒真正的错误。好的。这很有效。还有一个问题。如果在该页面上一次调用超过1个超时ajax函数,它将停,javascript,php,jquery,ajax,settimeout,Javascript,Php,Jquery,Ajax,Settimeout,如果它有效的话,作为一个答案。我能让它在中止时不说中止吗?这是最好的答案,这是你工作时的错误警报。中止将触发错误回调。只要在那里检查是中止还是真正的错误,只提醒真正的错误。好的。这很有效。还有一个问题。如果在该页面上一次调用超过1个超时ajax函数,它将停止工作。例如,如果需要两个按钮来调用此ajax函数,该怎么办?然后它停止工作。请看一看我的更新代码上面,下面的标题“更多细节”。谢谢。这就是使用全局变量时得到的结果。。。我本打算对此发表评论,但我认为我的回答已经足够详细了。无论如何,您可以只提


如果它有效的话,作为一个答案。我能让它在中止时不说中止吗?这是最好的答案,这是你工作时的错误警报。中止将触发错误回调。只要在那里检查是中止还是真正的错误,只提醒真正的错误。好的。这很有效。还有一个问题。如果在该页面上一次调用超过1个超时ajax函数,它将停止工作。例如,如果需要两个按钮来调用此ajax函数,该怎么办?然后它停止工作。请看一看我的更新代码上面,下面的标题“更多细节”。谢谢。这就是使用全局变量时得到的结果。。。我本打算对此发表评论,但我认为我的回答已经足够详细了。无论如何,您可以只提供触发器(按钮、输入、触发函数的任何元素)作为附加属性,并将xhr和超时变量附加到该属性。看看更新后的代码。这看起来像这样:
onclick='timeoutAjax(\'test2.php\,'input\,'name2\,'output2\,'10000\,this)
<script type = "text/javascript"> 

function timeoutAjax(url,type,theName,id,timeout) {

      $.ajax({
           type: "POST",
           url: url,
           data: { select: $(type+'[name='+theName+']').val()},
           error: function(xhr,status,error){alert(error);},
           success:function(data) {
             document.getElementById( id ).innerHTML = data;
             setTimeout(function() { timeoutAjax(url,type,theName,id,timeout); }, timeout);
           }

      });

}

</script>
<?php

include('ajax.php');

echo "<input type = 'text' name = 'name' onkeyup = 'timeoutAjax(\"test2.php\",\"input\",\"name\",\"output1\",\"10000\")'>";
echo "<div id = 'output1'/>";

?>
<?php

$time = date('H:i:s A');
echo $time;

?>
echo "<input type = 'submit' name = 'name1' value = 'Reset' onclick = 'timeoutAjax(\"test2.php\",\"input\",\"name1\",\"output1\",\"10000\")'>";
echo "<input type = 'submit' name = 'name2' value = 'Reset' onclick = 'timeoutAjax(\"test2.php\",\"input\",\"name2\",\"output2\",\"10000\")'>";

echo "<div id = 'output1'/>";
echo "<div id = 'output2'/>";
<script type = "text/javascript">
    //Create the status var (This may not be the best place to initialize it). Use your best judgement.
    var running = false;

    function timeoutAjax(url,type,theName,id,timeout) {


        //Check if there is an ajax call in progress. If not execute one.
        if(!running)
        {
            //Change the status to running
            running = true;
            console.log('In if')
            console.log(running)
            $.ajax({
                type: "POST",
                url: url,
                data: { select: $(type+'[name='+theName+']').val()},
                error: function(xhr,status,error){alert(error);},
                success:function(data) {
                    document.getElementById( id ).innerHTML = data;
                    setTimeout(function() {

                        //Set the status to false for the inner function call
                        running = false;
                        timeoutAjax(url,type,theName,id,timeout);
                        //Set the status to true for the outer function call
                        runnng = true;
                    }, timeout);
                }

            });

        }
    }

</script>
function timeoutAjax(url, type, theName, id, timeout, trigger) {
    // abort pending calls
    if (trigger.xhr) {
        trigger.xhr.abort();
    }
    // abort queued calls
    clearTimeout(trigger.queued);

    // make the call
    trigger.xhr = $.ajax({
        type: "POST",
        url: url,
        data: {
            select: $(type + '[name=' + theName + ']').val()
        },
        error: function (xhr, status, error) {
            alert(error);
        },
        success: function (data) {
            document.getElementById(id).innerHTML = data;
            // queue a new call
            trigger.queued = setTimeout(function () {
                timeoutAjax(url, type, theName, id, timeout, trigger);
            }, timeout);
        }

    });

}