2016-09-23 8 views
1

AJAXがインラインスクリプト関数を正常にロードする方法はありますか?AJAXがインラインスクリプト関数を正常にロードする方法はありますか?

なぜこれが機能していないのかわかりません。私はAJAXでページをレンダリングしようとしていますが、ページは正常にレンダリングされます。ただし、親ドキュメントでjavascript関数を宣言しない限り、インラインスクリプトを動作させることはできません。私は達成しようとしているものに関連する簡単な例を生成しました。


親ドキュメント

<!DOCTYPE html> 
    <html> 
     <head> 
     <script type='text/javascript'> 
      function loadChild(){ 
      var xhttp = new XMLHttpRequest(); 
      xhttp.onreadystatechange = function() { 
       if (this.readyState == 4 && this.status == 200) { 
       document.getElementById("childContent").innerHTML = this.responseText; 
       } 
      }; 
      xhttp.open("GET", "./child.html", true); 
      xhttp.send(); 
      } 
     </script> 
     </head> 
     <body> 
     <input type='button' value='Load Child' onclick='loadChild();'/> 
     <div id='childContent'> 

     </div> 
     </body> 
    </html> 


子ドキュメント

<input type='button' value='Child Function' onclick='childFunction();'/> 
    <script type='text/javascript'> 
     function childFunction(){ 
     alert('Do something'); 
     } 
    </script> 


私は私が私のサイト全体のために使用し、使用してサブサイトを呼び出すことができますPHPを経由して適応フレームワークを作成しようとしていますロードするAJAX;しかし、これを正しく機能させるには、各ページを呼び出す前に、親ドキュメント内のすべての関数をレンダリングする必要があります。 AJAXにインラインスクリプト関数を正常にロードさせる方法があるかどうかを知りたいですか? getscript()関数を使用してjQueryのを使用し

答えて

1

Iこのような場合、私はこれを行うには2つの手法を使用し、

  1. は自動的にスクリプトを実行する新しいスクリプトを、ロードします。ここ

    $.getScript("child.js", function(data, textStatus, jqxhr) { 
        //add this script to the document 
    }); 
    

    のみロードさchild.js例について

、それは、文書のDOM(スクリプトDOM)に添加し、それがchild.jsファイル内に記述されたジャバスクリプト関数を実行します。

  1. これを行う別の方法は、このコード全体をDOMに追加することです。 DOMテキストとして挿入されたJavaScriptは実行されません。しかし、動的スクリプトパターンを使用して、新しいJavascriptコードを実行することができます。

この質問をスタックオーバーフローで参照してください:Javascript Inserted inside DOM。実行するDOMのchild.htmlコード内のjavascriptでeval()関数を使用する必要があります

ありがとう、最高の幸運:

関連する問題