在php中编写javascript并没有太多好处,通常这只会导致不必要的代码耦合。然而,对于未来的注意事项,可以通过以下几种方式从PHP或任何其他服务器端语言定义javascript。
第一种方法是简单地从php中剥离脚本标记,并从javascript中调用eval:
ajax.php
<?php
echo "var e = document.getElementById( widget_more_ );
";
echo "e.innerHTML += <p> <a>TEST</a> </p> ;
";
?>
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_ );
";
echo " e.innerHTML += <p> <a>TEST</a> </p> ;
";
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有其用途,请参阅google-ajax-apis)。这两个示例仍然会使代码严重耦合。Midas的答案是一种更恰当的方式来完成你所追求的。