为什么我不能在Ajax响应文本中编写Javascript代码?

时间:2011-07-13 03:56:48

标签: php javascript ajax

PHP上的reponseText应该是这样的

echo "<script>alert('test')</script>";

但没有任何事情发生。如何返回Javascript代码?

3 个答案:

答案 0 :(得分:1)

ajax调用取决于调用者决定如何处理它(取决于返回的数据类型)。在这种情况下,如果您的调用者不准备执行此操作,则不会发生任何事情。根据实际代码在这里要做的事情,有许多不同的可能性来处理来自ajax调用的返回结果。

它可以被格式化为JSONP,因此它调用主页中的函数用于处理返回数据的代码。您可以返回完整的JS(没有标签)并在主机页面之后对其执行eval()(由于某些安全风险通常不被认为是明智的想法),或者它可能只是添加到当前页面并让浏览器只是解析你放在那里的任何内容。

通常,Ajax调用返回纯数据,主机页面代码处理该数据并保存代码以决定如何处理它。这是最安全的机制,因为没有任何方法可以阻止连接将代码注入到页面中(所有可以做的就是更改数据)。

答案 1 :(得分:0)

您已将其作为文字返回。现在您需要做的就是以某种方式将该文本插入页面:

document.body.innerHTML += response;

有很多事情要做,而且做了很多假设,但这是最简单的方法。

(嗯,这并不完全正确。最简单的方法是返回JavaScript,然后再eval。)

答案 2 :(得分:0)

这是一个简单的例子。但是不要包含<script>标签用于这个艰难的

$.ajax({
    type: "GET",
    dataType: "text",
    url: "jsLoader.php",
    success: function(data){
        eval(data);
    }
});