你如何从responseText获取javascript代码?

时间:2011-04-30 10:10:07

标签: php javascript ajax

如何将javascript代码传递给responseText?例如使用这个php:


<?php
echo "<script language='javascript'>
      for(i=0;i<3;i++){
          document.write(i);
      }
      </script>
     ";
?>

// output: 012

//and if you pass the php above into this responseText
document.getElementById('someId').innerHTML = xmlHTTPobj.responseText;

// there is no output

此代码已经过测试,没有ajax(仅限php),并按预期打印,但如果将此php传递给responseText则不会。

PS:没有拼写错误,没有语法错误,浏览器是:ff4 + firebug 1.7,IE8,chrome 10,opera 10,我只是想知道如何将javascript代码传递给responseText?

修改

PPS:随意回答这个问题。或者这是否意味着您无法将javascript代码传递给responseText?

2 个答案:

答案 0 :(得分:0)

这对我的(可能是有缺陷的)内存来说是未经测试的,但是我认为你需要eval()任何javascript才能像这样执行它。然后你只需发送没有脚本标签的javascript。 据我记得(这通常由框架处理),这正是我们使用JSON将数据结构从服务器发送回客户端的方式

答案 1 :(得分:0)

我的应用也遇到了这个问题。我不确定我是如何解决它的,但我不得不改变我的JS库(一个非常古老的Mootools)。 (它从http://hotblocks.nl/js/mootools_1_11.js上的第3215行开始。)

有些浏览器在插入DOM时执行javascript,有些浏览器在接收到它时执行它(Ajax调用已完成),而某些浏览器从未执行过。因此,Mootools解决方案是针对<script>块的正则表达式,单独评估内容,替换<script>块(保留em,但为空),然后执行完整的处理程序。

我会尝试设置一个小测试来说明这一点。

修改
我找到了这个例子jsfiddle:http://jsfiddle.net/zalun/NF2jz/

它使用Mootools的Request.HTML:http://jsfiddle.net/js/lib/mootools-1.2.5-core-json-fixed.js

这部分做了我上面所说的:

success: function(text){
    var options = this.options, response = this.response;

    response.html = text.stripScripts(function(script){
        response.javascript = script;
    });
    ...