【发布时间】:2017-10-11 20:55:37
【问题描述】:
我有一个如下所示的简单测试。它工作正常,但出于某种原因,“未定义”一词出现在弹出窗口中。没有什么能让我理解什么是未定义的。有没有人经历过这种情况?
HTML
<html><head>
<style>#popup{border:1px solid black;background:#eadcce;padding:10px;margin:35px;display:none;}</style>
<script>
function popup(){
var z;
if(window.XMLHttpRequest){z=new XMLHttpRequest();}else{z=new ActiveXObject("Microsoft.XMLHTTP");}
z.onreadystatechange=function(){if(z.readyState==4&&z.status==200){
if(z.responseText != ''){
document.getElementById('popup').innerHTML=eval(z.responseText);
document.getElementById('popup').style.display="block";
}
}}
z.open("POST",'/test2.php');z.send();
}
</script></head><body>
Push the button to open the popup: <button onclick="parent.popup();">Open Popup</button>
<div id="popup"></div>
</body></html>
test2.php
console.log("test");
一切都很好,除了“未定义”这个词出现在我的弹出窗口中。有谁知道为什么?我使用的是 Firefox 55.0.3。
【问题讨论】:
-
哈哈。不,你没有抓住重点。
-
因为您正在评估的内容没有返回值。不复杂。
-
这与问题 JDB 无关。
-
var s = document.createElement('script'); s.src = '/test2.php'; codeThatAppendsToHeader(s);例如。你要做的就是创建一个脚本标签并附加它。但是,您将无法读取其内容以获取模态文本,您必须通过其他方式获取它,例如在返回的 js 中调用函数
标签: javascript ajax eval