JS将无法通过AJAX调用正确执行

时间:2012-03-22 04:59:39

标签: javascript ajax

我的JS一直存在问题,而不是按照它所说的那样做!多年来我无法理解为什么,但现在我意识到我的脚本infact工作正常,它实际上与我的AJAX调用脚本有关。

获取文件并显示文件的页面是错误显示的位置。如果我正常访问脚本,它的工作完全正常。

是否与可能导致此问题的AJAX请求有关:S?

请看这里的效果。

此图片正确无误:

http://i39.tinypic.com/34fdvu8.jpg

这是错误的(这是通过ajax调用并显示的相同脚本):

http://i43.tinypic.com/2uysl6b.jpg

红色条很好..破坏部分是绿色条在ajax请求中以100%出现,但在直接查看脚本时出现20%(20%是正确答案)。< / p>

为什么会出现这种情况?

<head>
<script type="text/javascript">

    function percentage(){
        var perc = Math.round((500 / 2500) * 100);

        if(perc > 100)
        {perc = 100;}

        else if(perc < 0 )
        {perc = 0;}
        d = document.getElementById('health');
        d.style.width = perc + "%";
    };
    onload = percentage;
</script>
</head>
<body>
<div style="width:50%;background-color:red;min-height:15px;">   
         <div id="health" style="background-color:green;min-height:15px;"></div>
    </div>
</body> 

2 个答案:

答案 0 :(得分:1)

设置innerHTML不会运行与您尝试插入的“内部HTML文档”的“onload”相关联的脚本:

您可以在设置innerHTML之后运行“percentage”函数(如果它由innerHTML插入),或者在IFrame中呈现HTML(因为它将是完整页面将正常工作),或者重构代码以便数据和脚本分别进入并正确连接。

答案 1 :(得分:1)

这很危险,但它可能适合你。

$.get('http://url', function(data) {
    // .. your load logic hear

    // this line will execute all your script tags
    eval($(data).find('script').text());
})

注意:您仍然需要直接执行该函数,因为您的javascript会触发该函数onload(不会被捕获)