我有这个JavaScript:
<script>
if (str == "") {
document.getElementById("txtHint1").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint1").innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "/npsmart/umts/action_plano/?q=" + query1, true);
xmlhttp.send();
}
</script>
此JavaScript调用名为getuser.php
的页面。
这是getuser.php
的代码:
<!DOCTYPE html>
<html>
<body>
<p id="dumb"></p>
<script>
document.getElementById("dumb").innerHTML = "WORK";
</script>
</body>
</html>
我想要的只是将名为dumb
的段落内容更改为WORK。但是当我调用页面并加载时,我的段落内容保持为空。
就像我的Ajax呼叫请求不执行脚本标记一样。
的
我已经用这个简单而又天才的解决方案解决了我的问题:
function showUser() {
if(query_num == 2){
if (str == "") {
document.getElementById("txtHint1").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint1").innerHTML = this.responseText;
eval(document.getElementById("runscript").innerHTML);
}
};
xmlhttp.open("GET","/npsmart/umts/action_plano/?q="+55555,true);
xmlhttp.send();
}
在我的 getuser.php 文件中:
<script type="text/javascript" id="runscript">
document.getElementById("dumb").innerHTML = "WORK";
</script>
我刚刚在我的函数中放了:eval(document.getElementById("runscript").innerHTML);
,然后在php文件中我用这个调用了这个脚本:
<script type="text/javascript" id="runscript">
非常感谢大家=)
希望这篇文章可以帮助其他人。
答案 0 :(得分:0)
JS不会自动从嵌入在响应中的脚本执行。
由于getuser.php
是PHP脚本,因此无需使用JS并让浏览器设置段落内容。使用PHP本身:
<!DOCTYPE html>
<html>
<body>
<p id="dumb"><?php echo 'WORK'; /* or anything else */ ?></p>
</body>
</html>
否则,您必须在返回的AJAX响应中使用JS eval
,以使浏览器运行从脚本返回的JS。但我建议不要这样做。