2012-03-22 55 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