2012-03-22 50 views
0

我一直有问题,我的JS没有按照它的告诉!多年来,我无法解决为什么,但现在我意识到我的脚本实际上工作正常,其实际上与我的AJAX调用脚本有关。JS将无法通过AJAX呼叫正确执行

获取文件并显示它的页面 - 它显示不正确的地方。如果我通常访问脚本,它工作得很好。

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

看到这里的效果。

此图片是正确的:

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

这是错误的(这是通过AJAX只是打了个电话,显示在同一脚本):

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

红酒吧是好的。 。突破部分是绿色条在ajax请求中100%出现的事实,但直接查看脚本时以20%出现(20%是正确答案)。

任何想法,为什么这可能是?

<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> 
+0

有一个在代码中没有AJAX请求您发布... – 2012-03-22 05:03:33

+0

那么,AJAX请求的工作原理并不认为这是,但在这里你去:http://www.paste.to/MzYyMzM0它不会发送任何GET信息在这个特定的请求。 – Sir 2012-03-22 05:11:32

+0

仍然没有理由......你的AJAX不会调用百分比函数,它读取一些内容并将其作为内部HTML插入。它与你发布的样本有什么关系?你真的试图将这个示例HTML插入为innerHtml的任何机会? – 2012-03-22 05:24:05

回答

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(不会被抓)

+0

你怎么说它的危险? – Sir 2012-03-22 19:42:27

+0

http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-vil – rkw 2012-03-23 06:23:21

1

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

您可以设置innerHTML后运行“百分比”功能(如果是的innerHTML插入),或在iframe中呈现HTML(将正常工作,因为这将是完整的网页),这样的数据和脚本重构代码正在分开并正确连线。

+0

是iframe的唯一途径吗? :S – Sir 2012-03-22 06:24:15

+0

如果您的目标是渲染完整页面 - 是的,只有IFrame会为您提供正常页面的行为。如果你的目标是别的,那么可能还有别的方法。您可能应该创建一个新问题,说明您想要获得建议的内容。 – 2012-03-22 06:34:14

+0

嗯,我只是希望它的加载通过JS计算的div的宽度 - 没有意识到我不得不iframe它=/ – Sir 2012-03-22 06:34:59