Javascript 多个ajax请求在一段时间后不起作用

Javascript 多个ajax请求在一段时间后不起作用,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个页面,它连续(每秒)从服务器加载实时股票数据,并向名为data.php的php文件发出请求。我还有一个Ganns square of 9计算器,它使用ajax通过文本框的OnKeyUp函数将值传递给PHP文件(getdata.PHP),并返回一些输出 问题是- 当页面加载时,这两种方法都能很好地工作。可以使用实时数据和计算器。但是过了一会儿,计算器就不工作了。在将值写入文本框时,必须处理请求,并且必须通过ajax调用返回值,但这种情况不会发生 实时股票数据代码(每秒刷新): <sc

我有一个页面,它连续(每秒)从服务器加载实时股票数据,并向名为data.php的php文件发出请求。我还有一个Ganns square of 9计算器,它使用ajax通过文本框的OnKeyUp函数将值传递给PHP文件(getdata.PHP),并返回一些输出

问题是- 当页面加载时,这两种方法都能很好地工作。可以使用实时数据和计算器。但是过了一会儿,计算器就不工作了。在将值写入文本框时,必须处理请求,并且必须通过ajax调用返回值,但这种情况不会发生

实时股票数据代码(每秒刷新):

<script>
            function showPort(t)
            {
            var xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                document.getElementById("portfo").innerHTML=xmlhttp.responseText;
                }
              }
            xmlhttp.open("GET","data.php",true);
            xmlhttp.send();
            setTimeout(showPort,t);
            }
          </script>
<script>
            function showData(str)
            {
            if (str.length==0)
              {
              document.getElementById("txtData").innerHTML="";
              return;
              }
            var xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                document.getElementById("txtData").innerHTML=xmlhttp.responseText;
                }
              }
            xmlhttp.open("GET","getdata.php?a="+str,false);
            xmlhttp.send();
            }
          </script>

功能显示端口(t)
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“portfo”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”,“data.php”,true);
xmlhttp.send();
设置超时(显示端口,t);
}
它使用页面加载运行-

<body onload="JavaScript:showPort(2000);">

Ganns square计算器代码,该代码在textbox的KeyUp事件上运行:

<script>
            function showPort(t)
            {
            var xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                document.getElementById("portfo").innerHTML=xmlhttp.responseText;
                }
              }
            xmlhttp.open("GET","data.php",true);
            xmlhttp.send();
            setTimeout(showPort,t);
            }
          </script>
<script>
            function showData(str)
            {
            if (str.length==0)
              {
              document.getElementById("txtData").innerHTML="";
              return;
              }
            var xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                document.getElementById("txtData").innerHTML=xmlhttp.responseText;
                }
              }
            xmlhttp.open("GET","getdata.php?a="+str,false);
            xmlhttp.send();
            }
          </script>

函数showData(str)
{
如果(str.length==0)
{
document.getElementById(“txtData”).innerHTML=“”;
回来
}
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“txtData”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“getdata.php?a=“+str,false”);
xmlhttp.send();
}
运行textbox的onKeyUp事件-

<input type="text" placeholder="Last traded Price" name="str" onKeyUp="showData(this.value)">

我试图寻找类似的问题,但没有得到答案。因此,将此问题作为新问题发布在此处。

第一个脚本:

function showPort(t)
{
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("portfo").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","data.php",true);
    xmlhttp.send();
    setTimeout(showPort,t);
}
可以通过以下方式进行转换:

$(document).ready(function(){
    setInterval(function(){
        $.get("data.php", function(data){
            $("#portfo").html(data);
        });
    }, 2000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
下一个:

function showData(str)
{
    if (str.length==0)
    {
        document.getElementById("txtData").innerHTML="";
        return;
    }
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("txtData").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","getdata.php?a="+str,false);
    xmlhttp.send();
}
可以重写为:

function showData(str)
{
    if (str.length==0)
    {
        $("#txtData").html("");
        return;
    }
    $.get("getdata.php?a="+str, function(data){
        $("#txtData").html(data);
    });
}
你能试着执行上面的代码,看看它是否有效吗?不要忘记以这种方式包括jQuery:

$(document).ready(function(){
    setInterval(function(){
        $.get("data.php", function(data){
            $("#portfo").html(data);
        });
    }, 2000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">


您不能使用jQuery吗?我在标签中看到了,但代码中没有任何内容!:)我不喜欢JQuery。但是,如果有一种简单的方法可以用JQuery实现,那么我就准备好了。:)@是的,伙计。这会更容易!那就帮我对付那个家伙。我会尝试这样做。:)因此,我不需要在页面加载时调用函数ri8??因此,我尝试了u给出的代码。第二组代码工作得很好,但第一组代码似乎不起作用。它不输出任何东西。该区域留空。我会再次划过代码,很快回到这里。@Chandanzha当然。。。等待……)第一组代码似乎不起作用。不返回任何数据。所以,让它工作。你犯了一个很小的错误,伙计!设置间隔(代码、延迟)