2016-03-17 2 views
1

im сегодня изучил некоторые технологии ajax и сделал это, когда im нажимал кнопку im, получая текст из другого файла с функциями, но они не работают.Сценарий из другого файла

Мой главный файл

<html> 
<head> 
    <script> 
     function showHint(str) { 
       var xmlhttp = new XMLHttpRequest(); 
       xmlhttp.onreadystatechange = function() { 
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
         document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
        } 
       }; 
       xmlhttp.open("GET", "request/testa.php?q=" + str, true); 
       xmlhttp.send(); 
     } 
    </script> 
</head> 
<body> 
<button id="inp" style="background-color: #0000FF; color: #ffffff" onclick="showHint(this.value)"> 
    Just do it! 
</button> 
<p><span id="txtHint"></span></p> 
</html> 

и в файле, который пришлите мне текст (запрос/testa.php) является

test 2 

    <script> 

     document.getElementById("inp").value="You did it!"; 
     document.getElementById("inp").style.backgroundColor="ffffff"; 
    </script> 

и Tekst работает нормально, я получил текст "тест 2" и сценарий но это не работает.

ответ

1

Написание javascript-кода на вашу страницу с помощью innerHTML не будет выполнять скрипт.

Самый простой способ - использовать jQuery's load, который будет выполнить сценарии для вас.

+0

Здесь нет jQuery. –

+0

Что я могу сделать, когда у меня нет jquery или я не хочу его использовать? – DKNS

+0

Переместите код, который вы хотите выполнить, в функцию 'onreadystatechange'. В противном случае вам нужно будет добавить некоторые хаки, чтобы вытащить страницу сценария из загруженного файла и выполнить. –

0

Вы должны что-то изменить в testa.php. Поместите все в функцию или просто удалите тег скрипта.

function MyScript(){ 
     document.getElementById("inp").value="You did it!"; 
     document.getElementById("inp").style.backgroundColor="ffffff"; 
    } 

или

document.getElementById("inp").value="You did it!"; 
    document.getElementById("inp").style.backgroundColor="ffffff"; 

После этого вы можете заменить innerHTML в функции showHint для функции eval.

document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 

для

eval(xmlhttp.responseText); 

но иметь в виду, что функция Eval открывает дверь для ошибок или хаки.

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