Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 XML请求的多数组_Javascript_Ajax_Arrays_Xmlhttprequest - Fatal编程技术网

Javascript XML请求的多数组

Javascript XML请求的多数组,javascript,ajax,arrays,xmlhttprequest,Javascript,Ajax,Arrays,Xmlhttprequest,天哪,我需要一种基于idShout-1设置XML请求数组的方法 所以应该是这样的 var req = new Array(); req[idShout - 1] = ALL XML Data... 以下是我目前得到的结果,但它根本不起作用:( 这部分是在函数中 Timer[shoutCount - 1] = ""; 因此,不确定是否为计时器正确设置…?由于XHR是异步的,当readystatechange回调函数触发i的值已更改时,您需要在循环期间为i变量创建一个单独的闭包。最简单的方法是包

天哪,我需要一种基于idShout-1设置XML请求数组的方法

所以应该是这样的

var req = new Array();
req[idShout - 1] = ALL XML Data...
以下是我目前得到的结果,但它根本不起作用:(

这部分是在函数中

Timer[shoutCount - 1] = "";

因此,不确定是否为计时器正确设置…?

由于XHR是异步的,当
readystatechange
回调函数触发
i
的值已更改时,您需要在循环期间为
i
变量创建一个单独的闭包。最简单的方法是包装一个匿名函数围绕代码块,并使用作为第一个参数传递的
i
调用它:

for (i=0;i<req.length;i++)
{
    (function (i) {
        if (req[i])
        {
            if (HttpMethod == "GET")
            {
                req[i].onreadystatechange = function()
                {
                    if (req[i].readyState != 4)
                        return;
                    if (req[i].responseText !== null && req[i].status == 200)
                    {
                        document.getElementById("shoutbox_area" + idShout).innerHTML = req[i].responseText;
                    }
                }
            }
            req[i].open(HttpMethod,url,true);
            if (HttpMethod == "POST")
                req[i].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

            if (params == "")
                req[i].send(null);
            else
                req[i].send(params);

            return req[i];
        }
        else
            return null;
    })(i);
} 

用于(i=0;iThanks,我已经做了以下更改,并在问题中输入了它,但没有任何更改,元素中仍然没有任何内容…?仍然没有错误,但任何元素中都没有内容…?此外,我现在使用的是方法而不是HTTPMethod,但无论如何都不会有任何区别…好的,我更改了这个
req[req.push]=ajax_function();
到这个
req[idShout-1]=ajax_function();
现在它正在为最后一个shoutbox工作,但是它没有显示之前的任何信息??有什么想法吗?你认为这会导致问题,因为我在页面加载时调用它??有什么方法解决这个问题吗??
Timer[shoutCount - 1] = "";
for (i=0;i<req.length;i++)
{
    (function (i) {
        if (req[i])
        {
            if (HttpMethod == "GET")
            {
                req[i].onreadystatechange = function()
                {
                    if (req[i].readyState != 4)
                        return;
                    if (req[i].responseText !== null && req[i].status == 200)
                    {
                        document.getElementById("shoutbox_area" + idShout).innerHTML = req[i].responseText;
                    }
                }
            }
            req[i].open(HttpMethod,url,true);
            if (HttpMethod == "POST")
                req[i].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

            if (params == "")
                req[i].send(null);
            else
                req[i].send(params);

            return req[i];
        }
        else
            return null;
    })(i);
}