2012-03-22 21 views
0

私のJSには問題がありました。私はなぜ年齢のために働くことができませんでしたが、今は私のスクリプトinfactが正常に動作することを、実際にはAJAXのスクリプトを呼び出すと関連しています。JSはAJAXコールで正しく実行されません

ファイルを取得して表示するページが間違って表示されます。私がスクリプトに通常アクセスすれば、それは完全に正常に動作しています。

この問題を引き起こす可能性のあるAJAXリクエストとは何かがありますか?

この効果については、こちらを参照してください。

この画像は正しいです:これは間違っている

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

(単にAJAX経由で呼び出されて表示同じスクリプトである):

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

赤いバーで結構です。 。破損部分は、緑色のバーがajaxリクエスト1で100%で出てくるが、スクリプトを直接見ると20%で出るという事実である(20%が正解である)。

これは何故でしょうか?

innerHTMLのは、あなたが挿入しようと、「内部HTMLドキュメント」の「オンロード」に関連付けられたスクリプトを実行しないであろう設定
<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リクエストはありません... –

+0

AJAXリクエストはうまく動作するので、それはそれだとは思っていませんでしたが、ここに行きます:http://www.paste.to/MzYyMzM0この特定のリクエストに関するGET情報は送信しません。 – Sir

+0

まだ何の意味もありません... AJAXは%関数を呼び出さず、何かを読み込んでインナーHTMLとして挿入します。投稿したサンプルにどのように関連していますか?実際にサンプルHTMLをinnerHtmlとして挿入しようとしているのですか? –

答えて

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

+0

http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – rkw

1

:なし、通常のHTML要素が子としてHTML/HEADを持つことはできません

  • - そうでしょう(あなたが持っていないとIMG)のみ、トップレベルの体を - さえのonloadイベントを持っています何の内側の要素が存在しない
  • 一部のブラウザでもinnerHTMLプロパティのスクリプトをロードしません(つまりhttp://poeticcode.wordpress.com/2007/10/03/innerhtml-and-script-tags/を参照)
  • を無視すること。

innerHTMLを設定した後に「パーセント」関数を実行するか、IFrameでHTMLをレンダリングするか(完全なページになるので正常に動作します)、コードを再構成してデータとスクリプト別々に接続され、適切に配線されています。

+0

はiframeだけの方法ですか? :S – Sir

+0

あなたの目標が完全なページをレンダリングする場合 - はい、IFrameだけが通常のページの動作を提供します。あなたの目標が他の何かである場合、他の方法があります。あなたはおそらく、アドバイスを得るために達成したいことを述べる新しい質問を作成すべきです。 –

+0

まあ、私はちょうどJSを介して計算されたdivの幅をロードしたい - 私はiframeを持っていたことを認識していない=/ – Sir

関連する問題