如何解决按下按钮以运行与javascript脚本相呼应的php脚本
|| 这是单击按钮时运行的javascript的结尾xmlObj.open (\'GET\',/ajax.php,true);
xmlObj.send (\'\');
}
因此,这将在根目录中执行php脚本ajax.php:
<?php
echo \"<script type=\'text/javascript\'>\\n\";
echo \"var e = document.getElementById(\'widget_more_\');\\n\";
echo \"e.innerHTML += \'<p> <a>TEST</a> </p>\';\\n\";
echo \"</script>\";
?>
这是一个JavaScript代码,用于按ID在html文档中搜索该元素,并将TEST链接附加到该元素。我已经在html中正常运行了此javascript,而未尝试通过php对其进行回显,并且它起作用了!但是当我尝试通过php做到这一点时,却不是!我究竟做错了什么?
我这样做的原因是因为TEST实际上将是来自php变量的字符串。
请给我提意见。
谢谢。
解决方法
更好的是:
ajax.php
<?php
$string = \'TEST\';
echo $string;
?>
的JavaScript
window.onload = function() {
var e = document.getElementById(\'widget_more_\');
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(\'Microsoft.XMLHTTP\');
xmlhttp.open(\'GET\',\'/ajax.php\',true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
e.innerHTML += \'<p><a>\' + xmlhttp.responseText + \'</a></p>\';
}
}
xmlhttp.send(null);
}
我不太了解为什么不能使用PHP变量。
,在php内编写javascript没有太多好处,通常这只会导致不必要的代码耦合。但是,为了将来的注意,可以通过两种方式从PHP或任何其他服务器端语言定义javascript。
首先是简单地从php中剥离脚本标签并从javascript调用eval:
ajax.php
<?php
echo \"var e = document.getElementById(\'widget_more_\');\\n\";
echo \"e.innerHTML += \'<p> <a>TEST</a> </p>\';\\n\";
?>
Java脚本
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 \"}\";
?>
Java脚本
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 api)。这两个示例仍然使您的代码严重耦合。迈达斯的答案是完成所追求目标的更合适的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。