以递归方式运行使用XMLHttpRequest下载的JavaScript

时间:2012-08-29 09:43:28

标签: javascript ajax scripting download

是否可以更改此代码,因此如果http://www.myurl.com重定向到应该运行的js文件,它将以递归方式工作?

function include(scriptUrl)
{
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", scriptUrl);
        xmlhttp.onreadystatechange = function()
        {
            if ((xmlhttp.status == 200) && (xmlhttp.readyState == 4))
            {
                eval(xmlhttp.responseText);
            }
        };
        xmlhttp.send();
}
include("http://www.myurl.com");

2 个答案:

答案 0 :(得分:2)

为什么不这样做:

$("head").append("<script src='http://myurl.com' type='text/javascript'></script>"); 

当然你可以在没有jquery的情况下完成它,但这就是它的主旨。如果您只是从一个只需要GET参数的URL(如果有的话)中提取,那么只需添加一个包含它的新脚本元素就更容易(也更安全)。

这也将解决您的重定向问题,因为浏览器将遵循重定向。

答案 1 :(得分:1)

当网址将您重定向到其他位置时,它可能会为您提供301 status而不是200状态。在这种情况下,您的支票应该是:

if ((xmlhttp.status == 200 || xmlhttp.status == 301) && xmlhttp.readyState == 4)

或者您可以选择允许除错误状态以外的所有内容:

if (xmlhttp.status < 400 && xmlhttp.readyState == 4)