Нет большой пользы от написания javascript внутри php, обычно это просто приводит к ненужному соединению кода.Тем не менее, на будущее, можно определить javascript из PHP или любого другого серверного языка несколькими способами.
Первый - просто убрать теги script из вашего php и вызвать eval из javascript:
ajax.php
<?php
echo "var e = document.getElementById('widget_more_');\n";
echo "e.innerHTML += '<p> <a>TEST</a> </p>';\n";
?>
Javascript
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//For function scope
eval(xmlhttp.responseText);
//For global scope
window.eval(xmlhttp.responseText);
}
}
Альтернативно "немного" более гибкое решение:
ajax.php
<?php
echo "function showTest(){";
echo " var e = document.getElementById('widget_more_');\n";
echo " e.innerHTML += '<p> <a>TEST</a> </p>';\n";
echo "}";
?>
Javascript
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//Now we will dynamically create your script element in the header
//Get the header element on the page
var head= document.getElementsByTagName('head')[0];
//Create the new script tag
var script= document.createElement('script');
script.type= 'text/javascript';
script.innerHTML = xmlhttp.responseText;
//Append the new script to the header
head.appendChild(script);
showTest();
}
}
Эти примеры предназначены скорее для академических целей, чем для практических (хотя динамическая загрузка javascript имеет свое применение, см. API Google ajax).Оба эти примера все еще оставляют ваш код сильно связанным.Ответ Мидаса - гораздо более правильный способ достижения того, чего вы хотите.