Javascript not working when echo'd by php


Javascript not working when echo'd by php

当我回显这个时,我遇到了问题:

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
?>