繁体   English   中英

php回显后,JavaScript无法正常工作

[英]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中输出数据。

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

我猜想您已经在页面加载后通过ajax调用了此脚本。 在这种情况下,脚本没有运行就不足为奇了,因为浏览器在读取脚本时会运行脚本,并且不会等待其他脚本标记的出现。

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

试试以下这应该工作

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM