当php回声时,Javascript无法正常工作

时间:2014-11-05 13:48:17

标签: javascript php alert

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

echo "Logged in! <script> alert('hello'); </script>";

消息&#34;已登录!&#34;出现,但不是警报。我怎样才能解决这个问题,以便获得警报?我无法使用header();,因为我已经把事情搞得一团糟了!

我也尝试过多种方式:

echo "Test message <script> window.location.href = 'index.php';"

同样的事情,测试信息是回声,但脚本没有运行。

我希望有人可以帮助我!

编辑:

注意:所有这些代码都在xml文件中,我得到了它的响应并将其放入div中。所以脚本在一条消息中,我用responseXML得到并在div中输出数据。

问题我有一句话:如何在没有jquery的情况下在ajax调用中运行javascript函数?

3 个答案:

答案 0 :(得分:1)

我猜你在页面加载后通过ajax调用这个脚本。在这种情况下,脚本没有运行就不足为奇了,因为浏览器在读取脚本时会运行脚本,而不是处于待机状态以便显示另一个脚本标记。

如果是这种情况,您可以通过添加一些事件监听器来解决这个问题,甚至更好,在ajax响应的最后调用所需的函数。

答案 1 :(得分:0)

尝试下面这应该工作

<?php 
echo 'Logged in ';
?>
<script> alert("hello")</script>;
<?php
  // the rest of your php code
?>

答案 2 :(得分:0)

您的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);