2015-07-28 2 views
0

Okey, поэтому я знаю, что этот вопрос можно считать дубликат, но я не получил ответы на другие вопросы - в частности this one. В нем говорится, что я могу использовать eval(), но я не совсем понимаю, как это сделать.Тэг сценария не работает при загрузке PHP-страницы

Я использую PHP для создания веб-страницы с использованием echo. Это отлично работает, если я просто загружаю страницу PHP, как обычно, но когда я запрашиваю эту страницу с помощью AJAX, теги <script> не работают. Ниже приведен код для запроса страницы PHP.

loadChat(); 
    nIntervId = setInterval(loadChat, 2000); 
    function loadChat() { 
     getOutput(); 
    } 
    // handles the click event for link 1, sends the query 
    function getOutput() { 
     getRequest(
      'http://xplority.net/wp-content/themes/hardCoded/chatWindow.php', // URL for the PHP file 
      drawOutput, // handle successful request 
      drawError // handle error 
    ); 
     message(); 
     return false; 
    } 
    // handles drawing an error message 
    function drawError() { 
     var container = document.getElementById('output'); 
     container.innerHTML = 'Bummer: there was an error!'; 
    } 
    // handles the response, adds the html 
    function drawOutput(responseText) { 
     var container = document.getElementById('output'); 
     container.innerHTML = responseText; 
    } 
    // helper function for cross-browser request object 
    function getRequest(url, success, error) { 
     var req = false; 
     try{ 
      // most browsers 
      req = new XMLHttpRequest(); 
     } catch (e){ 
      // IE 
      try{ 
       req = new ActiveXObject("Msxml2.XMLHTTP"); 
      } catch(e) { 
       // try an older version 
       try{ 
        req = new ActiveXObject("Microsoft.XMLHTTP"); 
       } catch(e) { 
        return false; 
       } 
      } 
     } 
     if (!req) return false; 
     if (typeof success != 'function') success = function() {}; 
     if (typeof error!= 'function') error = function() {}; 
     req.onreadystatechange = function(){ 
      if(req.readyState == 4) { 
       return req.status === 200 ? 
        success(req.responseText) : error(req.status); 
      } 
     } 
     req.open("GET", url, true); 
     req.send(null); 
     return req; 
    } 

Как я могу сделать теги <script>?

ответ

0

Предполагая, что вы получаете некоторую разметку с метками сцентов здесь и там, вы не можете сделать eval что-то, что предлагает другой вопрос.

jQuery - это ваш готовый к использованию вариант, предполагающий, что вы готовы его использовать.

$('#output').html('<p>Hello, Foo.</p><scr' + 'ipt>alert(\'foo\')</scr' + 'ipt>');

выполнит сценарий и добавлять разметку. Обратите внимание, как расширяются теги скриптов в моем коде. Это важно, поэтому браузер не допускает тег закрывающего скрипта в строковом литерале javascript с реальным закрывающим тегом исполняемого скрипта. Но если вы загружаете разметку с сервера, это не проблема.

Также с использованием этого метода рекомендуется загружать разметку только из надежного ресурса, поскольку скрипты будут выполняться.

P.S. если вы не планируете использовать jQuery (если не можете по какой-то причине), вы можете проверить их реализацию и использовать ее в одиночку. (Я имею в виду проверить их исходный код), но только если вы это сделаете.

+0

Спасибо! Это определенно может работать. Но если я хочу получить скрипт из своего php, могу ли я затем повторить этот код в скрытый элемент и скопировать его из этого элемента с помощью jQuery? –

Смежные вопросы