当我回应这个时,我遇到了问题:
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函数?
答案 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);