当我回显这个时,我遇到了问题:
echo "Logged in! <script> alert('hello'); </script>";
此时会显示消息"已登录!",但不会显示警报。我该如何修复它以获得警报?我不能使用header();
,因为我已经把东西回音了!
我还尝试了多种方法,比如:
echo "Test message <script> window.location.href = 'index.php';"
同样的事情,测试消息被回显,但脚本没有运行。
我希望有人能帮助我!
编辑:
注意:所有这些代码都在一个xml文件中,我从中获得响应并将其放入div中。因此,脚本在一条消息中,我用responseXML获得该消息并将数据输出到div中。
我在一句话中有一个问题:在没有jquery的情况下,如何在ajax调用中运行javascript函数?
我猜您在页面加载后通过ajax调用此脚本。在这种情况下,脚本不运行也就不足为奇了,因为浏览器在读取脚本时会运行脚本,并且不处于等待另一个脚本标记出现的状态。
如果是这种情况,您可以通过添加一些事件侦听器来解决这个问题,或者更好的方法是,在ajax响应的末尾调用所需的函数。
您的PHP看起来不错,但您可能需要更改收集JavaScript的方式。
考虑这个例子:http://jsfiddle.net/0vcewvkc/1/
如果您只收集JavaScript,则可以将响应封装在jQuery标记($()
)中,然后将其附加到文档中。
$("#go").click(function() { // call the function here
// your ajax code would go here, but either way you will end up with a string of JavaScript
var response = '<script>alert("hi");</' + 'script>';
// use jQuery to append this script to your document's body, like so:
$(response).appendTo(document.body)
});
更新
要在没有jQuery的情况下做到这一点,AJAX调用的末尾将有以下代码:
var response = 'alert("hi");'; // note that we have removed the <script> tag
var s = document.createElement("script");
s.innerHTML = response;
document.getElementsByTagName('body')[0].appendChild(s);
请尝试以下操作,这将适用于
<?php
echo 'Logged in ';
?>
<script> alert("hello")</script>;
<?php
// the rest of your php code
?>