在JavaScript中每10秒发送一次xmlHttpRequest

在JavaScript中每10秒发送一次xmlHttpRequest,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我运行了一个JavaScript函数,将xmlHttpRequest发送到.ashx(我们将其命名为send_req(),它第一次在页面加载时运行)。对于onreadystatechange,我有一个函数,可以接收XML数据并将其显示在页面上(我们将此函数命名为getanswer()) 我希望每20秒自动更新页面上的XML数据。为此,我在writexml()的末尾使用了setTimeout(send_req(),20000),但它不会更新页面上的数据。我在代码中的***行添加了一个警报()。它每

我运行了一个JavaScript函数,将
xmlHttpRequest
发送到
.ashx
(我们将其命名为
send_req()
,它第一次在页面加载时运行)。对于
onreadystatechange
,我有一个函数,可以接收XML数据并将其显示在页面上(我们将此函数命名为
getanswer()

我希望每20秒自动更新页面上的XML数据。为此,我在
writexml()
的末尾使用了
setTimeout(send_req(),20000)
,但它不会更新页面上的数据。我在代码中的
***
行添加了一个
警报()。它每隔一秒钟就会显示在页面上

如果不使用
setTimeout
,我的代码就可以正常工作

这是我的密码

var Population = "";
var Available_money = "";
var resource_timer;
var httpReq_resource;

function send_req() {
    if (window.ActiveXObject) {
        httpReq_resource = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest) {
        httpReq_resource = new XMLHttpRequest();
    }

    var sendStr = "user_id=1";
    if (httpReq_resource)
    {
        httpReq_resource.onreadystatechange = getanswer;
        httpReq_resource.open("POST", "Answer_Resource_change.ashx");
        httpReq_resource.send(sendStr);
    }
}

function getanswer() {
    var results = httpReq_resource.responseXML;
    if (httpReq_resource.readyState == 4) {
        if (httpReq_resource.status == 200) {
            try {
                var value;
                var values = results.getElementsByTagName("values");
                for (var i = 0; i < values.length; i++) {

                    value = values[i];
                    Population = value.getElementsByTagName("Population")[0].firstChild.nodeValue;
                    Available_money = value.getElementsByTagName("Available_money")[0].firstChild.nodeValue;
                    ... and some more like two line up
                }

                make_changes();
                **********************************
                resource_timer = setTimeout(send_req(), 20000);

            }
            catch (e) {
            }
        }
    }
}

function make_changes() {
    $("li span#l1").text(Available_money + '/' + Population);
    ...and some more like up line
}
var Population=”“;
var可用金额=”;
var资源定时器;
var-httpReq_资源;
函数send_req(){
if(window.ActiveXObject){
httpReq_resource=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
else if(window.XMLHttpRequest){
httpReq_resource=new-XMLHttpRequest();
}
var sendStr=“user\u id=1”;
if(httpReq_资源)
{
httpReq_resource.onreadystatechange=getanswer;
httpReq_resource.open(“POST”、“Answer_resource_change.ashx”);
httpReq_resource.send(sendStr);
}
}
函数getanswer(){
var results=httpReq_resource.responseXML;
if(httpReq_resource.readyState==4){
如果(httpReq_resource.status==200){
试一试{
var值;
var values=results.getElementsByTagName(“值”);
对于(变量i=0;i
这是:

resource_timer = setTimeout(send_req(), 20000);
应该是:

resource_timer = setTimeout(send_req, 20000);
第一个执行
send_req()
结果,20秒后,第二个执行
send_req
本身。

应该是:

resource_timer = setTimeout(send_req, 20000);

第一个在20秒后执行
send_req()
结果,第二个执行
send_req
本身。

等待,每10秒(标题)或每20秒(文本)?@passcod对不起,我的错了。每20秒一次,每10秒一次(标题)或每20秒一次(文字)?@passcod对不起,我的错。每隔20秒,你可以解释一下发送请求的结果。
你的意思是什么。
发送请求()
返回?是的,我说的“结果”是指发送请求()的“返回值”。你能解释一下发送请求()的结果吗。
你的意思是什么。
发送请求()
返回吗?是的,我说的“结果”是指发送请求()的“返回值”。