2016-09-23 5 views
1

Есть ли способ получить AJAX для успешной загрузки встроенных функций скрипта?Ajax load inline javascript

Я не могу понять, почему это не работает. Я пытаюсь сделать страницу с 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 успешно загружать встроенные функции скрипта?

ответ

1

I такие случаи, которые я использую два способа сделать это,

  1. Использование JQuery для использования функции getscript(), чтобы загрузить новый скрипт, который будет автоматически выполнять сценарий.

Для примера

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

Вот только child.js загружен, он затем добавляется к документу DOM (DOM сценариев), и он выполняет JavaScript функции, написанные внутри файла child.js ,

  1. Другой способ сделать это - добавить весь этот код в DOM. Введенный JavaScript как текст DOM не будет выполнен. Но вы можете использовать динамический шаблон сценария для выполнения нового кода Javascript.

Пожалуйста, обратитесь к этому вопросу в переполнение стека: Javascript Inserted inside DOM. Вам необходимо будет использовать функцию eval() в вашем javascript внутри child.html код для DOM, который должен быть выполнен

Спасибо и удачу :)